작성
·
543
0
안녕하세요. FW 시즌 vs SS 시즌별로 피부 고민의 차이를 좀 분석해볼려고 하고요.
네이버 뉴스 크롤링 코드에서 날짜 부문을 추가해서 수집하려고 하는 데 오류가 발생하는 상황입니다.
날짜 HTML은 제대로 불러오는 것 같은데요... 출력에서 조금만 검토해주셨으면 하는 부분이 있습니다.
제가 추가로 작성한 부분은 빨간색으로 색칠해두었습니다.
------------------------------------------------------------------------------------------------------------------------
keyword = pyautogui.prompt("검색어를 입력하세요.")
lastpage = pyautogui.prompt("마지막 페이지번호를 입력하세요.")
# 엑셀 생성
wb = Workbook()
ws = wb.create_sheet(keyword)
# 행번호
row = 1
# 열 너비 조절
ws.column_dimensions['A'].width = 60
ws.column_dimensions['B'].width = 60
ws.column_dimensions['C'].width = 120
page_num = 1
for i in range(1, int(lastpage)*10, 10):
print(f"{page_num}페이지 크롤링 중입니다.")
response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}&start={i}")
html = response.text
soup = BeautifulSoup(html, 'html.parser')
articles = soup.select("div.info_group") # 뉴스 기사 div 10개 추출
for article in articles:
links = article.select("a.info")
if len(links) >= 2: # 링크가 2개 이상이면
url = links[1].attrs['href'] # 두번째 링크의 href 추출
# 다시 request를 날려 준다
response = requests.get(url, headers={'User-Agent' : 'Mozila/5.0'})
html = response.text
soup_sub = BeautifulSoup(html, 'html.parser')
# 연예 뉴스 체크
if "entertain" in response.url:
title = soup_sub.select_one(".end_tit")
content = soup_sub.select_one("#articeBody")
date = soup_sub.select_one("div.article_info > span > em")
else:
title = soup_sub.select_one(".media_end_head_headline")
content = soup_sub.select_one("#newsct_article")
date = soup_sub.select_one("span.media_end_head_info_datestamp_time._ARTICLE_DATE_TIME")
print("=======링크======= \n", url)
print("=======제목======= \n", title.text.strip())
print("=======본문======= \n", content.text.strip())
print("=======날짜======= \n", date)
# w저장
ws[f'A{row}'] = url
ws[f'B{row}'] = title.text.strip()
ws[f'C{row}'] = content.text.strip()
ws[f'D{row}'] = date.text.strip()
# 자동 줄바꿈 기능
ws[f'C{row}'].alignment = Alignment(wrap_text=True)
row = row + 1
time.sleep(0.3)
# 마지막 페이지 여부 확인하기
isLastPage = soup.select_one("a.btn_next").attrs['aria-disabled']
if isLastPage == 'true':
print("마지막 페이지입니다.")
break
page_num = page_num + 1
# 워드 문서 저장하기
wb.save(f"{keyword}_result.xlsx")
============================================================================================
=======날짜=======
<span class="media_end_head_info_datestamp_time _ARTICLE_DATE_TIME" data-date-time="2022-06-05 09:42:02">2022.06.05. 오전 9:42</span>
출력이 이렇게되는 데요. 2022.06.05. 오전 9:42만 받아보게끔 하는 방법이 있을까요?