일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Selenium
- Merge Repositories
- 파이썬
- 셀레니움
- convert to shp
- 플라스크
- 웹페이지
- 백준
- Chat-GPT
- 혁신성장부문
- 괄호 문제
- to shp
- geopandas
- colab runtime
- flask
- Crawling
- 2164 카드2
- 인스타그램
- NLP
- Python
- clustering
- plotly dash
- 알고리즘
- geoDataFrame
- string to list
- python buildpacks
- kmeans
- 해시태그
- 크롤링
- 코랩 런타임
Archives
- Today
- Total
코딩코딩코딩
파이썬 네이버 뉴스 일일 기사 크롤링 - 1 본문
네이버 뉴스 키워드 일일 기사 크롤링
- 키워드와 날짜를 지정하고 크롤링하는 함수를 만들고 해당 검색의 페이지가 끝날 때까지 크롤링 진행
import pandas as pd
import numpy as np
import feedparser
from bs4 import BeautifulSoup as bs
import urllib
import urllib.request as req
import requests
from konlpy.tag import Kkma, Okt, Komoran
okt = Okt()
from konlpy.utils import pprint
import warnings
warnings.filterwarnings("ignore")
href_list = [] # 기사 주소가 들어갈 리스트
TitDesc_list = [] # 제목 + 요약 내용 리스트
title_list = [] # 제목 리스트
def Crawling(keyword, date):
keyword = '+'.join(keyword.split(' '))
last = False
page_num = 1
ds = date
de = ds
while last == False:
url = "https://search.naver.com/search.naver?&where=news&query={0}&sm=tab_pge&sort=0&photo=0&field=0&reporter_article=&pd=3&ds={1}&de={2}&docid=&nso=so:r,p:,a:all&mynews=1&cluster_rank=238&start={3}&refresh_start=0".format(keyword,ds,de,str(page_num))
raw = requests.get(url)
html = raw.content
soup = bs(html, 'html.parser')
ul = soup.find('ul', {'class':'type01'})
li_list = ul.findAll('li')
for li in li_list:
try:
href_list.append(li.dl.dt.a['href'])
d_list = li.findAll('dd')
#자식 노드 dd가 두 개인데 두 번째 노드에 description이 들어가있으므로 전부 불러온 후 인덱싱할 것임
title = li.dl.dt.a['title']
description = d_list[1].text
# 자식 노드 dd의 두 번째에 들어가 있는 description을 text로 불러옴
title_list.append(title)
TitDesc_list.append( title + ' ' + description)
# 제목과 요약내용을 붙여서 리스트에 넣음
except AttributeError:
pass
# 마지막 페이지 주소 확인 (다음페이지 버튼이 없으면 종료페이지로 간주)
page = soup.find('div', {'class':'paging'})
page_a_list = page.findAll('a')
if '다음페이지' in str(page_a_list[-1]):
page_num += 10
else:
last = True
Crawling('춘천', '2020.07.14')
'춘천'이라는 키워드로 7월 14일의 기사를 크롤링
- 크롤링 내용 출력
'파이썬 > 텍스트마이닝' 카테고리의 다른 글
인스타그램 해시태그 크롤링 및 분석 - 3 (1) | 2020.07.24 |
---|---|
인스타그램 해시태그 크롤링 및 분석 - 2 (5) | 2020.07.23 |
인스타그램 해시태그 크롤링 및 분석 - 1 (1) | 2020.07.21 |
파이썬 네이버 뉴스 일일 기사 크롤링 - 3 (1) | 2020.07.20 |
파이썬 네이버 뉴스 일일 기사 크롤링 - 2 (1) | 2020.07.20 |
Comments