以前selenium配合PhantomJS可以爬取动态网页,但是由于PhantomJS不在更新以后,就不在支持更高版本的python,
所以,谷歌驱动浏览器无头模式就应运而生了,它是相当简单实用的,直接摞代码。
import time
from scrapy.http import HtmlResponse
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class SeleniumReports(object):
"""驱动浏览器访问**详情页"""
# driver = webdriver.PhantomJS()
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver",
chrome_options=options)
def process_request(self,request,spider):
if request.url.endswith('.html'):
self.driver.get(request.url)
time.sleep(3)
response = HtmlResponse(url=self.driver.current_url, request=request, body=self.driver.page_source, encoding='utf-8')
return response
def __del__(self):
self.driver.close()
这是我直接在我的某个项目里抽出来的,还是相当简洁的,希望对爬取动态网页的人有帮助。