데이터 분석 10년차로 얻은 많으 경험을 공유하고 싶습니다.
특히 요즘도 많이 사용되고 있는 크롤링 기술에 대해 쉽고 빠르게 적용할 수 있는 글이 많지 않아 작성보고자 합니다.
1부에서 사용되는 원칙 1가지는 다음과 같습니다.
크롤링 제1원칙: 같은 형태의 반복 수집 방식을 채택한다.
-----------------------------
진행 프로젝트: 네이버 뉴스의 본문 링크 가져오기!
- 같은 형태의 예시를 쉽게 설명드리기 위해 '네이버뉴스'가 담긴 뉴스만 채택하여 진행하겠습니다.
- 차이점:
'네이버뉴스' 가 있는 경우:
- div.info_group
- a 태그 2개
'네이버뉴스'가 없는 경우:
- div.info_group
- a 태그 1개
왜 2개인지 분석해보니 하나는 뉴스를 제공하는 사이트(뉴스1, 매일 경제 등)를 말하고, 다른 하나는 네이버 링크로 총 2개가 있는 것을 확인할 수 있겠습니다.
본격적으로 크롤링을 진행해보겠습니다.
- 모듈 불러오기
!pip3 install BeautifulSoup4
import requests
from bs4 import BeautifulSoup
- 애플 관련 네이버 뉴스 기사 진행하겠습니다.
- 주소: https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%95%A0%ED%94%8C
response = requests.get('https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%95%A0%ED%94%8C')
html = response.text
soup = BeautifulSoup(html, 'html.parser')
articles = soup.select('div.info_group') # 뉴스 기사 10개 추출
for article in articles:
links = article.select('a.info')
if len(links) == 2:
url = links[1].attrs['href']
print(url)
출력 결과:
----------------------------------
참고 사항!!
CSS 선택 (class? id? 속성?)
class --> '.'
id --> '#'
attribute(속성) --> ['href']
자식 선택자 --> >
으로 연결해서 사용합니다.
예시:
<div class = 'info_group'> 크롤링.
</div>
--> .info_group
<div id = 'articleBody'> 크롤링.
</div>
--> #articleBody
<div class = 'logo_sports'>
<span> 스포츠 </span>
</div>
--> .logo_sports > span
<div class = 'news_headline'>
<h4> 제목 </h4>
</div>
--> .news_headline > h4
'데이터분석' 카테고리의 다른 글
네이버 뉴스 본문 크롤링 - 3부: 본문 내용 크롤링 고도화 (0) | 2023.08.13 |
---|---|
네이버 뉴스 본문 크롤링 - 2부: 본문 내용 크롤링 (0) | 2023.08.13 |
KB 국민은행 제5회 Future Finance A.I. Challenge (0) | 2023.08.12 |