네이버 뉴스 크롤링 - 특정 검색어에 대한 결과

Joey Lee·2020년 5월 30일
0

Web-crawling

목록 보기
3/5

1. 대상사이트

https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%BD%94%EC%95%8C%EB%9D%BC

2. 크롤링 내용

  • 특정 검색어에 대한 네이버에 등록된 모든 뉴스의 기사제목, 날짜, 언론사명, 기사링크를 csv 파일로 저장하기

3. 코드

from bs4 import BeautifulSoup
import requests
import csv

csv_filename = "naver_news_스타벅스.csv"
csv_open = open(csv_filename, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow( ('Title', 'Date', 'Source', 'Link', ) )  #제목 입력

# 총 100까지, 10페이지간의 간격으로 진행
for n in range(1,100,10):
    req = requests.get("https://search.naver.com/search.naver?&
                        where=news&query=스타벅&start="+str(n), 
                        headers={'User-Agent':'Mozilla/5.0'})
    html = req.text
    soup = BeautifulSoup(html, 'html.parser')

    articles = soup.select('ul.type01 > li')

    for article in articles:
        title = article.select_one("a._sp_each_title").text          
        # 기사 제목
        others = article.select_one("dd.txt_inline").text          
        # date 추출을 위해 여러 정보를 불러옴
        agency = article.select_one("span._sp_each_source").text     
        # 언론사
        link = article.select_one("a._sp_each_title")['href']
        
        agency = agency.rstrip("언론사 선정")                           
        # 불필요한 문자 삭제
        
        start = others.find('2')
        end = start + 10
        article_date = others[start:end]

        csv_writer.writerow ( (title, article_date, agency, link, ) )

csv_open.close()

4. 추가 학습 필요사항

  • csv 모듈에 대한 공부
  • 보다 효율적으로 데이터 파싱하는 방법
profile
안녕하세요!

0개의 댓글