728x90
소개
다음 뉴스와 네이버 뉴스를 날짜별로 데이터 수집하기 위해 필요한 날짜연산에 대해 알아보겠습니다.
날짜연산
다음 날짜 파라미터입니다.
regDate=20200809
네이버 날짜 파라미터 입니다.
date=20200809
날짜 연산을 위해선 datetime 모듈을 이용해야 하는데요.
자세한 설명은 아래 링크를 참조해 주시구요.
하루 전의 날짜를 구하기 위해서는 다음과 같은 과정이 필요합니다.
날짜 형태의 문자열과 그와 같은 포맷으로 strptime() 함수를 이용해서 datetime 객체로 변환 후
timedelta 1 day 객체와 연산 후 다시 문자열로 변환합니다.
date = '20200809'
date_format = '%Y%m%d'
dt = datetime.datetime.strptime(date, date_format)
print(f'type: {type(dt)}, value: {dt}')
td = datetime.timedelta(days=1)
print(f'type: {type(td)}, value: {td}')
past_date = datetime.datetime.strftime(dt - td, date_format)
print(f'type: {type(past_date)}, value: {past_date}')
type: <class 'datetime.datetime'>, value: 2020-08-09 00:00:00
type: <class 'datetime.timedelta'>, value: 1 day, 0:00:00
type: <class 'str'>, value: 20200808
코드
8월 9일 날짜를 기준으로 이틀 전까지 요청합니다.
import requests
from bs4 import BeautifulSoup as bs
import datetime
date_format = '%Y%m%d'
date = '20200809'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
url = 'https://news.daum.net/breakingnews/society?regDate={}'
for i in range(3):
res = requests.get(url.format(date), headers=headers)
if res.status_code == 200:
html = bs(res.text, 'html.parser')
cont = html.find('ul', {'class': 'list_news2 list_allnews'})
title = cont.li.a.img['alt']
print(title)
dt = datetime.datetime.strptime(date, date_format)
td = datetime.timedelta(days=1)
date = datetime.datetime.strftime(dt - td, date_format)
"7월30일~8월8일 남대문시장 '케네디상가' 방문자 유증상시 코로나19 검사"
안산도시공사 노사 농촌일손돕기 '구슬땀'
영산강·섬진강 6개 지점에 홍수 특보
'Crawling > Basic' 카테고리의 다른 글
파이썬 다음-뉴스 댓글 크롤링 하기 -3 : 인증 (0) | 2020.08.09 |
---|---|
파이썬 다음-뉴스 댓글 크롤링 하기 -2 : 동적인 데이터를 수집하는 방법 (0) | 2020.08.09 |
파이썬 다음-뉴스 크롤링 하기 -1 (0) | 2020.08.07 |
파이썬 크롤링할 범위를 구하는 방법 (0) | 2020.08.07 |
아이피 우회하여 크롤링하기 tor / requests[socks] (0) | 2020.08.03 |