코바코 웹스크롤링
url 파싱
import urllib.request # 파이썬에서 웹의 url 을 인식할 수 있게하는 모듈
from bs4 import BeautifulSoup
from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어하기 위해
from selenium.webdriver.common.keys import Keys # 키보드를 컴퓨터가 알아서 누르기 위해서
import time # 중간중간 sleep 을 걸어야 해서 time 모듈 import
from tqdm import tqdm_notebook
########################### url 받아오기 ###########################
# 웹브라우져로 크롬을 사용할거라서 크롬 드라이버를 다운받아 위의 위치에 둔다
# 팬텀 js로 하면 백그라운드로 실행할 수 있음
binary = 'C:\\data\\chromedriver_win32\\chromedriver.exe'
# 브라우져를 인스턴스화
browser = webdriver.Chrome(binary)
# 광고자료실 url 받아옴
# for문으로 페이지 넘김
ad_url = []
for i in range(1,2):
list_url = "https://www.kobaco.co.kr/site/main/archive/advertising/5?cp="+ str(i) +"&pageSize=8&sortDirection=DESC&arcUse=true&arcCategory=5&metaCode1=broadcast&adtDefaultYear=false"
browser.get(list_url)
time.sleep(3) # 네트워크 느릴까봐 안정성 위해 sleep 해줌
html = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴
soup = BeautifulSoup(html, "lxml") # html 코드를 검색할 수 있도록 설정
html_list = soup.select("div.bbs-gallery > ul > li > a")
for h in html_list:
ad_url.append(h.get("href"))
# ad_url
# for ad in ad_url:
ad = "https://www.kobaco.co.kr/" + ad_url[0]
광고 개별url 접속 후 데이터 수집
import re
import openpyxl as xl
import pandas as pd
# dict = {}
# dict['0'] = []
# dict['1'] = []
# dict['2'] = []
# dict['3'] = []
aa = []
for i in ad_url:
ad = "https://www.kobaco.co.kr" + i
browser.get(ad)
time.sleep(3) # 네트워크 느릴까봐 안정성 위해 sleep 해줌
html2 = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴
soup2 = BeautifulSoup(html2, "lxml") # html 코드를 검색할 수 있도록 설정
# dict = {}
# dict['script'] = []
# dict['sujet'] = []
# dict['detail'] = []
# dict['title'] = []
# dict['year'] = []
# 광고 스크립트
# test = soup2.select("div.video-wrap > div > p ")
# for i in test:
# a = re.sub('[\n|\r|\t]','',i.text)
# dict['script'].append(a)
# 광고주제 대분류, 소분류, 제목, 제작연도
test2 = soup2.find_all('td',class_='py-10 px-20 text-left')
bb = []
for t in test2[0:4]:
bb.append(t.text)
aa.append(bb)
data = pd.DataFrame(aa)
data
+) 참고 블로그
openpyxl을 이용한 엑셀 데이터 추출하기
openpyxl 이란? openpyxl은 Excel 2010 xlsx/xlsm/xltx/xltm 파일을 읽고 쓰는 Python 라이브러리입니다. 설치방법 pip install openpyxl 사용방법 # 코드블럭에 삽입하다보니 인덴트가 안맞습니다. 참고해주세요!..
coblin.xyz
https://datalabbit.tistory.com/24
[데이터 크롤링] 파이썬 크롤링 데이터 엑셀로 저장하기 with Openpyxl 패키지
Review 참고 포스팅 : 2020/05/23 - [Python Programming/Using Packages] - [데이터크롤링] 데이터크롤링을 위해 HTML 이해하기 [데이터크롤링] 데이터크롤링을 위해 HTML 이해하기 안녕하십니까, 간토끼입니다...
datalabbit.tistory.com
크롤링 결과 엑셀(csv)로 저장하기①
크롤링한 결과를 엑셀로 저장하는 방법에 대해서 살펴보겠습니다. 저장하는 방법에도 여러가지가 있을 수 ...
blog.naver.com
https://kbs4674.tistory.com/88
Ruby on Rails : 가상 브라우저를 활용한 크롤링 [Gem : selenium-webdriver]
해당 글은 https://blog.naver.com/kbs4674/221220959692 로 부터 게시글이 이전되었습니다. 크롤링 자료 연결고리 1. Nokogiri를 활용한 크롤링 [클릭] iframe/javascript 기반 사이트에 대해선 크롤링 지원이..
kbs4674.tistory.com
https://liveyourit.tistory.com/14
[파이썬] 동적 웹 크롤링 (1) - Selenium webdriver 설치 및 사용
파이썬 Selenium(셀레니움) webdriver를 사용해서 웹크롤링을 수행하기 위해 Selenium 모듈 설치, 사용할 브라우저, 브라우저의 드라이버를 설치해보고 사용방법을 간단히 알아본다. 추가적으로 chromedri
liveyourit.tistory.com
셀레니움 설치와 크롬 드라이버 자동 처리 - 뻥뚫리는 파이썬 코드 모음
셀레니움을 사용할 때는 드라이버가 필요하다. 파이어폭스는 geckodriver, 크롬은 chromedriver, 그외 PhantomJS 등 브라우저마다 각각의 드라이버가 필요하다. 이 드라이버는 버전이 업그레이드 될때마
pythondocs.net
https://ddolcat.tistory.com/935
[Python]크롬 드라이버 버전 오류 SessionNotCreatedException: Message: session not created: This version of ChromeDriver
파이썬 셀레니움(selenium)으로 크롤링할 때 발생되는 오류로, 기존에 다운받은 크롬브라우저용 드라이버가와 현재 사용중인 클롬 브라우저 보다 버전이 낮아서 발생되는 문제입니다. 지난주까지
ddolcat.tistory.com
이슈
WebDriverException: Message: chrome not reachable
(Session info: chrome=97.0.4692.71)
browser.get() 에서 에러발생
webdriber 설치
pip install webdriver-manager
Failed to establish a new connection: [WinError 10061] 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다'
> 이 에러문구때문에 끊어서 진행함
import urllib.request # 파이썬에서 웹의 url 을 인식할 수 있게하는 모듈
from bs4 import BeautifulSoup
from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어하기 위해
from selenium.webdriver.common.keys import Keys # 키보드를 컴퓨터가 알아서 누르기 위해서
import time # 중간중간 sleep 을 걸어야 해서 time 모듈 import
from tqdm import tqdm_notebook
# from webdriver_manager.chrome import ChromeDriverManager
import os
import pandas as pd
import re
########################### url 받아오기 ###########################
# 웹브라우져로 크롬을 사용할거라서 크롬 드라이버를 다운받아 위의 위치에 둔다
# 팬텀 js로 하면 백그라운드로 실행할 수 있음
binary = 'C:\\data\\chromedriver_win32\\chromedriver.exe'
# 브라우져를 인스턴스화
browser = webdriver.Chrome(binary)
# driver = webdriver.Chrome(ChromeDriverManager().intall())
# 광고자료실 url 받아옴
# for문으로 페이지 넘김
ad_url = []
aa_test = []
for i in tqdm_notebook(range(5,7)): # 4페이지까지 완료, 6페이지까지 완료
list_url = "https://www.kobaco.co.kr/site/main/archive/advertising/5?cp="+ str(i) +"&pageSize=8&sortDirection=DESC&arcUse=true&arcCategory=5&metaCode1=broadcast&adtDefaultYear=false"
browser.get(list_url)
time.sleep(5) # 네트워크 느릴까봐 안정성 위해 sleep 해줌
html = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴
soup = BeautifulSoup(html, "lxml") # html 코드를 검색할 수 있도록 설정
html_list = soup.select("div.bbs-gallery > ul > li > a")
for h in html_list:
ad_url.append(h.get("href"))
# aa = []
for a in ad_url:
time.sleep(3)
ad_site = "https://www.kobaco.co.kr" + a
browser.get(ad_site)
time.sleep(6) # 네트워크 느릴까봐 안정성 위해 sleep 해줌
html2 = browser.page_source # 크롬브라우져에서 현재 불러온 소스 가져옴
soup2 = BeautifulSoup(html2, "lxml") # html 코드를 검색할 수 있도록 설정
script_list = soup2.select("div.video-wrap > div > p ")
content_list = soup2.find_all('td',class_='py-10 px-20 text-left')
bb = []
for con in content_list[0:4]:
bb.append(con.text) # 대분류, 소분류, 제목, 제작연도
for scr in script_list:
bb.append(re.sub('[\n|\r|\t]','',scr.text)) # 스크립트
aa.append(bb)
aa_test.append(bb)
browser.quit()
data = pd.DataFrame(aa)
data.columns = ['대분류', '소분류', '제목', '제작연도','스크립트']
data
# data.to_csv("c:\\data\\ad_list.csv")