뉴스 별 댓글 반응 수집
# 저장해둔 url 불러오기
df = pd.read_csv('navernews_urls.csv')
df['url']
len(df['url'])
dict = {}
# n : 크롤링할 뉴스 갯수
n = 10 # 전체 뉴스 수 : len(df['url'])
# 페이지당 기사 수집
for i in tqdm(range(0, n)):
try:
# 뉴스 크롬창 띄우기
chrome_path = chromedriver_autoinstaller.install()
driver = webdriver.Chrome(chrome_path) # 윈도우 : "chromedriver.exe"
driver.get(df['url'][i])
time.sleep(1)
# 기사 데이터 수집
# 기사 제목
title = driver.find_element_by_css_selector('.tts_head').text
# 기사 날짜
date = driver.find_element_by_css_selector('.t11').text
# 기사 추천수 날짜
up = int(driver.find_element_by_css_selector('.u_cnt._count').text)
# 좋아요
like = int(driver.find_element_by_css_selector(".end_btn .u_likeit_list.good .u_likeit_list_count._count").text)
# 훈훈해요
warm = int(driver.find_element_by_css_selector(".end_btn .u_likeit_list.warm .u_likeit_list_count._count").text)
# 슬퍼요
sad = int(driver.find_element_by_css_selector(".end_btn .u_likeit_list.sad .u_likeit_list_count._count").text)
# 화나요
angry = int(driver.find_element_by_css_selector(".end_btn .u_likeit_list.angry .u_likeit_list_count._count").text)
# 후속기사 원해요
want = int(driver.find_element_by_css_selector(".end_btn .u_likeit_list.want .u_likeit_list_count._count").text)
# 기사 댓글 갯수
review_count = int(driver.find_element_by_css_selector(".u_cbox_count").text.replace(',', ''))
# 더보기 클릭 횟수
moreview_num = review_count//20
# 댓글 버튼 클릭
driver.find_element_by_css_selector(".lo_txt").click()
time.sleep(1)
# 더보기 버튼 여러번 클릭하기
k=0
while k <= moreview_num: # 더보기 횟수만큼 반복
try:
driver.find_element_by_css_selector(".u_cbox_page_more").click() # 더보기 버튼 클릭
time.sleep(1)
k = k+1
except:
break # 에러나면 클릭 반복문을 빠져나가라
# review 수집하기
review_list = []
overlays1 = ".u_cbox_text_wrap"
reviews = driver.find_elements_by_css_selector(overlays1)
for review in tqdm(reviews):
review = review.text
review_list.append(review)
target_info = {}
target_info['기사명'] = title
target_info['날짜'] = date
target_info['기사 추천 수'] = up
target_info['좋아요'] = like
target_info['훈훈해요'] = warm
target_info['슬퍼요'] = sad
target_info['화나요'] = angry
target_info['후속기사 원해요'] = want
target_info['댓글 수'] = len(review_list)
target_info['댓글'] = review_list
dict[i] = target_info #기사한개완료
print(title, '( 댓글 수:', len(review_list),')')
driver.close()
time.sleep(2)
except:
driver.close()
continue
print(len(dict))
dict
# 판다스로 만들기
import pandas as pd
result_df = pd.DataFrame.from_dict(dict, 'index')
result_df
# result_df.rename(columns={result_df.columns[0] : name}, inplace=True)
# 파일로 저장
result_df.to_excel("naver_article_({}).xlsx".format(keyword))
'Crawling' 카테고리의 다른 글
인스타 해시태그 사진 크롤링_insta_crawl (0) | 2021.12.31 |
---|---|
인스타 크롤링_insta_crawl (0) | 2021.12.31 |
네이버 뉴스 url 크롤링_naver_news_url_crawl (0) | 2021.12.30 |
1. 블로그 url 수집하기 (0) | 2021.12.30 |
0. 크롤링 하기 위한 준비 작업 (0) | 2021.12.30 |