import sys
import os
import pandas as pd
import numpy as np
# "url_list.csv" 불러오기
url_load = pd.read_excel("blog_url.xlsx")
url_load = url_load.drop("Unnamed: 0", axis=1) # 불필요한 칼럼 삭제
num_list = len(url_load)
print(num_list)
url_load
url_load['url']
i = 5
url = url_load['url'][i]
chrome_path = chromedriver_autoinstaller.install()
driver = webdriver.Chrome(chrome_path)
driver.get(url) # 글 띄우기
time.sleep(1)
# iframe 접근
driver.switch_to.frame('mainFrame')
time.sleep(1)
dict = {} # 전체 180개 크롤링 데이터를 담을 그릇
target_info = {} # 개별 블로그 내용을 담을 딕셔너리 생성
# 제목 크롤링 시작
overlays = ".se-module.se-module-text.se-title-text"
tit = driver.find_element_by_css_selector(overlays) # title
title = tit.text
title
# 글쓴이 크롤링 시작
overlays = ".link.pcol2"
nick = driver.find_element_by_css_selector(overlays) # nickname
nickname = nick.text
nickname
# 날짜 크롤링
overlays = ".se_publishDate.pcol2"
date = driver.find_element_by_css_selector(overlays) # datetime
date
datetime = date.text
datetime
# 내용 크롤링
overlays = ".se-component.se-text.se-l-default"
contents = driver.find_elements_by_css_selector(overlays) # contents
contents
contents[0].text
content_list = []
for content in contents:
content_list.append(content.text)
content_str = ' '.join(content_list) # content_str
content_str
# 글 하나는 target_info라는 딕셔너리에 담기게 되고,
target_info['title'] = title
target_info['nickname'] = nickname
target_info['datetime'] = datetime
target_info['content'] = content_str
target_info
# 각각의 글은 dict라는 딕셔너리에 담기게 됩니다.
dict[i] = target_info
dict
# 엑셀로 저장하기
result_df.to_excel("blog_content.xlsx", encoding='utf-8-sig')
pwd
##위에 코드들을 for문으로 한번에
dict = {} # 전체 크롤링 데이터를 담을 그릇
# 수집할 글 갯수 정하기
number = 20
# 수집한 url 돌면서 데이터 수집
for i in tqdm_notebook(range(0, number)):
# 글 띄우기
url = url_load['url'][i]
chrome_path = chromedriver_autoinstaller.install()
driver = webdriver.Chrome(chrome_path)
driver.get(url) # 글 띄우기
# 크롤링
try :
# iframe 접근
driver.switch_to.frame('mainFrame')
target_info = {} # 개별 블로그 내용을 담을 딕셔너리 생성
# 제목 크롤링 시작
overlays = ".se-module.se-module-text.se-title-text"
tit = driver.find_element_by_css_selector(overlays) # title
title = tit.text
# 글쓴이 크롤링 시작
overlays = ".nick"
nick = driver.find_element_by_css_selector(overlays) # nickname
nickname = nick.text
# 날짜 크롤링
overlays = ".se_publishDate.pcol2"
date = driver.find_element_by_css_selector(overlays) # datetime
datetime = date.text
# 내용 크롤링
overlays = ".se-component.se-text.se-l-default"
contents = driver.find_elements_by_css_selector(overlays) # contents
content_list = []
for content in contents:
content_list.append(content.text)
content_str = ' '.join(content_list) # content_str
# 글 하나는 target_info라는 딕셔너리에 담기게 되고,
target_info['title'] = title
target_info['nickname'] = nickname
target_info['datetime'] = datetime
target_info['content'] = content_str
# 각각의 글은 dict라는 딕셔너리에 담기게 됩니다.
dict[i] = target_info
time.sleep(1)
# 크롤링이 성공하면 글 제목을 출력하게 되고,
print(i, title)
# 글 하나 크롤링 후 크롬 창을 닫습니다.
driver.close()
# 에러나면 현재 크롬창을 닫고 다음 글(i+1)로 이동합니다.
except:
driver.close()
time.sleep(1)
continue
# 중간,중간에 파일로 저장하기
if i == 30 or 50 or 80:
# 판다스로 만들기
import pandas as pd
result_df = pd.DataFrame.from_dict(dict, 'index')
# 저장하기
result_df.to_excel("blog_content.xlsx", encoding='utf-8-sig')
time.sleep(3)
print('수집한 글 갯수: ', len(dict))
print(dict)
'Crawling' 카테고리의 다른 글
네이버 쇼핑 크롤링1_제목, url, 카테고리 (0) | 2022.01.05 |
---|---|
urllib, BeautifulSoup 으로 잡코리아 크롤링 (0) | 2022.01.04 |
urllib.request 이용해 네이버뉴스 크롤링 (0) | 2022.01.01 |
유튜브 영상 조회수 크롤러_youtube_crawl (0) | 2021.12.31 |
인스타 해시태그 사진 크롤링_insta_crawl (0) | 2021.12.31 |