728x90
반응형
이번 페이지에서는 selenium 과 phantom js 에 대해서 추가로 알아보도록 한다. 이 전 페이지에서 3번에 해당하는 방법을 배울 수 있다.
selenium 은 javascript 등으로 웹이 동적으로 정보를 받아오는 것을 크롤링 할 수 없을때 코드를 통해 브라우저를 작동하게 해준다.
phantom js를 통해 가상으로 웹을 작동할 수 있다.
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
phantomjs 를 다운로드하고, 압출을 풀고 phantomjs.exe 파일이 있는 곳의 경로를 지정해준다.
js_path = r'C:\Users\rok80\class_data\phantomjs-2.1.1-windows\phantomjs-2.1.1-windows\bin\phantomjs.exe'
driver = webdriver.PhantomJS(executable_path=js_path)
-> windows 보안경고 창이 뜨고 액세스 허용을 해주면 된다.
이 아래부분은 일반적인 scraping 과 비슷하다.
url = "http://www.yonhapnews.co.kr/home09/7091000000.html?query\
=%EC%95%8C%ED%8C%8C%EA%B3%A0&from=20150324&to=20160324&period=1y"
driver.get(url)
soup = BeautifulSoup(driver.page_source)
soup.find_all("div", class_="cts_atclst")
브라우저를 작동하는 방식이기 때문에 브라우저를 켜는데 시간이 걸리므로, sleep을 해준다.
import time
url = "http://www.yonhapnews.co.kr/home09/7091000000.html?query\
=%EC%95%8C%ED%8C%8C%EA%B3%A0&from=20150324&to=20160324&period=1y"
driver.get(url)
time.sleep(2)
#그리고 현재 잘 켜졌는지 screen shot 을 통해 확인
driver.save_screenshot('yeonhap.png')
-> 'yeonhap.png' 경로를 따로 지정하지 않았기 때문에 실행 후 웹 화면을 캡쳐하여 python working directory에 저장합니다.
결과를 확인을 해본다.
soup = BeautifulSoup(driver.page_source)
soup.find_all("div", class_="cts_atclst")
728x90
반응형
댓글