반응형
Q.
사용자에게 입력 받아 네이버 뉴스를 크롤링해보자.
A.
import requests
from bs4 import BeautifulSoup as BS
def list2dict(keywords):
keys = {}
for keyword in keywords:
keys[keyword]=0
return keys
date = input("언제[YYYYmmdd] 기사를 검색할까요? : ")
pages = int(input("총 몇 페이지를[20/page]를 검색할까요? : "))
keywords = input("관심있는 단어를 띄어쓰기로 입력하세요 : ").split()
keys = list2dict(keywords)
number = 1
news= []
for page in range(1, pages + 1):
url = "https://news.naver.com/main/list.nhn?mode=LSD&mid=sec&sid1=001&date={}&page={}".format(date, page)
response = requests.get(url)
text = response.text
html = BS(text, "html.parser")
li_list = html.find("td", {"class":"content"}).find_all("li")
for li in li_list:
title = li.find("dt","").find("a").text.strip("\n\t\r ") # 뉴스 제목 추출하기
try:
img_url = li.find("img")["src"].split("?")[0]
except:
img_url = "없음"
body = li.find("span", {"class":"lede"}).text # 뉴스 내용 요약 추출하기
writer = li.find("span", {"class":"writing"}).text # 뉴스 제공자
for key in keys.keys():
if key in title:
keys[key] += 1
print("기사 제목 : {:03}_{}".format(number, title))
print("기사 내용 : {}".format(body))
print("기사 사진 : {}".format(img_url))
print("기사 제공 : {}".format(writer))
print("")
print("-------------------------------------------------------------------")
number += 1
O.
언제[YYYYmmdd] 기사를 검색할까요? : 20190101
총 몇 페이지를[20/page]를 검색할까요? : 1
관심있는 단어를 띄어쓰기로 입력하세요 : IT
기사 제목 : 011_ITALY NEW YEAR 2019
기사 내용 : New Year tradition in Rome Italian Maurizio Palmulli, also known as 'Mi …
기사 사진 : https://imgnews.pstatic.net/image/origin/091/2019/01/01/6980236.jpg
기사 제공 : EPA연합뉴스
-------------------------------------------------------------------
Process finished with exit code 0
반응형
'Python_Crawling > Crawling' 카테고리의 다른 글
User agent - Python Web Crawling (0) | 2019.04.27 |
---|---|
190302>Python - Naver 증권 일일 시세 크롤링 (0) | 2019.03.02 |
190224> Python-NaverNews 사진 + 뉴스 제목 + 요약 + 제공자 크롤링 (0) | 2019.02.24 |
190224> Python-Naver News 크롤링 (0) | 2019.02.24 |
190224> Python-Naver Menu 크롤링 (0) | 2019.02.24 |