빅데이터 전문가 되기

Python을 활용한 Crawling (네이버 뉴스) 본문

Python

Python을 활용한 Crawling (네이버 뉴스)

지야소이 2023. 7. 2. 21:15

앞서, Python을 활용하여 지식백과를 Crawling을 하였습니다.

 

 

Python을 활용한 Crawling (네이버 지식백과)

키워드 검색을 통해 연관검색어, 검색어의 뜻에 대하여 알 수 있도록 지식백과를 Crawling해보겠습니다. 아래는 지식백과(naver)의 사이트 주소입니다. 지식백과 주소 : https://terms.naver.com/ 네이버 지

hi-210.tistory.com

 

 

 

 

이번에는 네이버 뉴스를 Crawling하여 이를 통해 Wordcloud를 해보겠습니다.

 

아래는 네이버 뉴스에 대한 주소입니다.

 

: 네이버 뉴스검색

''의 네이버 뉴스검색 결과입니다.

search.naver.com

 

 

앞서와 마찬가지로 이번에도 예시로 딸기를 키워드로 설정하겠습니다.

- 딸기에 대한 뉴스의 제목, 내용, 링크 주소를 가져오도록 하겠습니다.

 

 

 

👉 라이브러리 활성화

import urllib.request
# 검색어 인코딩
from urllib.parse import quote
from bs4 import BeautifulSoup

 

 

- 이번에는 전체의 내용을 가져온 후 그 안에서 for문을 활용하여 추출하겠습니다.

 

 

 

 

👉 함수를 활용하여  Crawling

def search(noun):
    # 검색어를 ASCII로 인코딩
  query = quote(noun)
  url = f"https://search.naver.com/search.naver?where=news&sm=tab_pge&query={query}"
  html = urllib.request.urlopen(url)
  soup = BeautifulSoup(html, "html.parser")
  hdline = soup.find("ul", {"class": "list_news"})
  lis = hdline.findAll("li")
  index = 1
  for li in lis:
      try:
          a_tag = li.find("a", {"class": "news_tit"})
          a_href = a_tag.get("href")
          title = a_tag.get_text()
          div_tag = li.find("div", {"class": "dsc_wrap"}).get_text().strip()
          print("[" + str(index) + "]", title)
          print(div_tag)
          print(a_href)
          index += 1
          print()
      except:
          pass

noun = input("뉴스검색어를 입력하세요: ")
search(noun)

-  검색어를 아스키코드로 변경해줘야 하기 때문에 query의 변수를 넣어줍니다.

   why? 사용자 정의함수로 설정을 해줬기 때문!

- for문을 활용하여  ul 안의 li를 가져옵니다.

- a, href, div의 내용을 text()만 가져오고 strip()으로 띄어쓰기를 제거해줍니다.

- try, except는 예외를 두어 에러의 발생을 방지합니다.

- 딸기에 대한 뉴스가 크롤링되는 것을 알 수 있습니다.

 ( 이는 한 페이지에 대한 내용만을 크롤링한 것으로 여러 페이지를 이용하고 싶으면 url을 변경해주면 됩니다. )

 

 

이상 네이버 뉴스 크롤링에 대한 설명이였습니다.

Comments