[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://s1004games.com

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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
64 [python][자료구조] "pdf 취소선 검출" How to identify strike-out text from PDF files using Python 졸리운_곰 2024.07.18 544
63 [python][자료구조] 오픈 소스 Python PDF 파서 라이브러리 file 졸리운_곰 2024.07.16 445
62 [python][자료구조] 벡터화 | Vectorization file 졸리운_곰 2023.12.21 330
61 [python][자료구조] Python의 Loop? NO! , Python의 Vectorization? OK!!! file 졸리운_곰 2023.12.21 473
60 [python][자료구조] Python - MySQL 데이터 추가, 삭제, 업데이트 졸리운_곰 2023.05.13 488
59 [python][자료구조] Python의 JSON - 문자열을 JSON으로 변환하는 방법 졸리운_곰 2023.05.06 456
58 [python][자료구조] [Python] Logging to MongoDB (로그 남기기) file 졸리운_곰 2023.03.24 428
57 [python][자료구조] [스파르타 웹 개발 종합] 파이썬으로 크롤링하고 DB에 저장하기(request, bs4, mongoDB 패키지 사용) 졸리운_곰 2023.03.12 461
56 [python][자료구조] [MongoDB] Document Query(조회) – find() 메소드 졸리운_곰 2023.03.08 315
55 [python][자료구조] Python(flask)으로 mongoDB 제어하기 – pymongo file 졸리운_곰 2023.03.08 604
54 [python][자료구조] django sqlite3 MySQL로 전환하기 file 졸리운_곰 2023.03.02 409
53 [python][자료구조] django에서 db.sqlite3 데이터를 mysql로 옮기기 졸리운_곰 2023.03.02 427
52 [python][자료구조] Python - JSON 파일 읽고 쓰는 방법 졸리운_곰 2023.02.04 480
51 [python][자료구조] [인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시) 졸리운_곰 2023.02.04 363
50 [python][자료구조] Dropbox API 사용하기 (with python) 졸리운_곰 2022.12.03 306
49 [Python][자료구조] SQLAlchemy Tutorial(한글) - 2 졸리운_곰 2022.12.03 393
48 [Python]][자료구조] SQLAlchemy Tutorial(한글) - 1 졸리운_곰 2022.12.03 275
47 [python][자료구조] python anaconda 에서 mysql 접속 졸리운_곰 2022.01.25 657
46 [python 자료구조] 림코딩의 파이썬으로 csv 다루기 강좌 (읽기,쓰기,수정,추가) 졸리운_곰 2022.01.16 521
45 python - 읽은 후 kafka 메시지를 삭제하는 방법 졸리운_곰 2021.07.13 902
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED