[Python, 인터넷] 네이버 뉴스 기사 크롤링

네이버 뉴스 기사 크롤링

네이버 뉴스에 접속하여, 원하는 키워드와 원하는 기간을 설정하여 나오는 모든 기사 검색 결과를 크롤링하는 방법입니다. 기사 타이틀, 기사 등록일, 언론사 및 정확하지는 않지만 기자 이름과 기자 이메일까지 가져옵니다 마지막으로 엑셀 및 csv로 저장합니다.

#코드

import requests
from bs4 import BeautifulSoup
import math
import pandas
import re


resultList = []

url = "https://search.naver.com/search.naver?"

params = {
    "where": 'news',

    # 네이버 기사 검색 값
    "query": '매틱 네트워크 스테이킹',

    # 페이지네이션 값
    "start": 0,

    # "nso": 'so:r,p:1y,a:all'
}

# nso: so: r, p: 1y, a: all -> 최근 1년
# nso: so: r, p: 6m, a: all -> 최근 6개월
# nso: so: r, p: 1d, a: all -> 1일
# 없으면 전체 검색

# headers={'User-Agent': 'Mozilla/5.0'} -> 안티 크롤링 회피
raw = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}, params=params)
html = BeautifulSoup(raw.text, "html.parser")

# 검색결과 html body
articles = html.select("ul.type01 > li")

# 전체 기사 수
totalCount = html.select("div.section_head > div.title_desc > span")[0].text.split(' / ')[1][:-1]

for i in range(0, math.floor(int(totalCount)/10)+1)):
    if i == 0:
        params['start'] = i
    else:
        params['start'] = i * 10 + 1

    raw = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}, params=params)
    html = BeautifulSoup(raw.text, "html.parser")
    articles = html.select("ul.type01 > li")

    for ar in articles:
        # 제목 값
        title = ar.select_one("a._sp_each_title").text

        # 검색된 기사의 url을 가져와서 다시 html을 get
        articleUrl = ar.find("a")["href"]
        innerRaw = requests.get(articleUrl, headers={'User-Agent': 'Mozilla/5.0'})

        # 가져온 기사 html중 '기사', '@' string을 모두 가져온다
        innerHtml = BeautifulSoup(innerRaw.text, "html.parser")
        reporter = innerArticles = innerHtml(text=re.compile("기자"))
        reporterEmail = innerArticles = innerHtml(text=re.compile("@"))

        # 언론사 값
        source = ar.select_one("span._sp_each_source").text

        # 등록일 값
        date = ar.select_one("dd.txt_inline").text.split("  ")[1]

        res = {"title": title, "company": source,
               "url": articleUrl, "date": date, "reporter": reporter, "reporterEmail": reporterEmail}
        resultList.append(res)

# 검색된 기사 갯수
resultList.append({"totalCount": totalCount})

df = pandas.DataFrame(resultList)

df.to_csv('blockChain_articles.csv')
df.to_excel('blockChain_articles.xlsx')
 

[출처] https://kyounghwan01.github.io/blog/etc/python/naver-news-crawling/#%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
46 [python][Django] [개념] Django는 Web Server가 아니라구요!! file 졸리운_곰 2023.03.11 464
45 [python][Django] [Django] Django Rest Framework에서 request 로깅하기 졸리운_곰 2023.03.11 381
44 [python][Django] Django REST Framework 졸리운_곰 2023.03.10 486
43 [python][Django] Django의 기본 개념 file 졸리운_곰 2023.03.10 473
42 Django 장고 텍스트에디터 사용하기(CKeditor) file 졸리운_곰 2020.11.22 933
41 Django Traffic Monitor + 트래픽 초과 알림 file 졸리운_곰 2020.11.22 513
40 공공 데이터 XML 크롤링을 통해 Django HTML에 띄워보기 file 졸리운_곰 2020.05.05 536
39 파이썬 장고와 워드프레스 연동의 간단한 방법 : Simple django wordpress integration with Django WordPress API library 졸리운_곰 2019.10.28 1200
38 Django의 세션을 이용한 단계별 페이지 만들기 file 졸리운_곰 2019.02.02 880
37 Django 템플릿 (Template) 졸리운_곰 2019.02.02 606
36 python django 기본 file 졸리운_곰 2018.09.02 1097
35 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 file 졸리운_곰 2018.05.22 563
34 Installing Python and Django on WampServer file 졸리운_곰 2018.02.18 740
33 python django 개요 다이어그램 file 졸리운_곰 2018.02.10 937
32 웹서버 중에서 Django를 선택한 이유 졸리운_곰 2017.08.22 1306
31 Django App 생성 file 졸리운_곰 2017.03.06 472
30 Django - 설치 및 Hello World 웹 서비스 만들기 졸리운_곰 2017.03.05 549
29 Learning Django and AngularJS 졸리운_곰 2017.02.06 1694
28 [Django 17] Django 디버깅 file 졸리운_곰 2017.01.28 1185
27 [Django 16] Django - Site Deployment 졸리운_곰 2017.01.28 598
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED