티스토리 뷰

728x90

[원하는 주제와 관련된 최근 기사를 크롤링해 보겠습니다.]


먼저 네이버 기사 검색 url양식을 따오면

(search.naver.com/search.naver?sm=tab_hty.top&where=news&query="+article)과 같은 양식임을 확인할 수 있습니다.

기사의 제목을 따기위해 양식을 확인하고 그에 맞는 정보를 가져옵니다. <코드 :16번줄>

따온 내용들이 모두 news_title로 들어가 있을텐데, 필요없는 내용들을 슬라이싱으로 잘라내 진짜 "제목"만 남깁니다.

 

import requests
from bs4 import BeautifulSoup
from datetime import datetime

article = str(input())
try:
    url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query="+article
    names = '네이버 기사'
    data = []
    articles = []
    titles = []
    articles_link = []
    data_remove = []
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    news_titles = soup.select('.type01 li dt a[title]')

    for title in news_titles:
        title = str(title).split("title")[2]
        title = str(title).split(">")[0]
        title = str(title).replace("=","")
        articles.append(title)

    for href in soup.find("div", class_="news mynews section _prs_nws").find_all("ul"):
        articles_link.append(href.find("a")["href"])

except:
    article = "해당 기사를 찾을 수 없습니다."
    names = "X"
    articles[0] = "X"
    articles[1] = "X"
    articles[2] = "X"
    articles_link[1] = "X"
    articles_link[2] = "X"
    articles_link[3] = "X"

print("{} 기사 관련 정보".format(article))
print("기사 제목:{} \n링크: {} \n기사 제목: {} \n링크: {} \n기사 제목: {} \n링크: {}".format(articles[0], articles_link[1], articles[1], articles_link[2],articles[2],articles_link[3]))

 실행 결과입니다:

링크: 에 하이퍼 텍스트가 살아있어서 누르면 해당 기사로 이동됩니다.

 

※해당 사이트의 robots.txt를 찾아보면

User-agent: * Disallow: /search

이므로 이 포스팅은 공부 참고용으로만 사용해주시기를 권장합니다! ※

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함