我们在之前已经使用selenium中间件获取了github的cookie进行模拟登陆,但selenium的功能不止于此,我们对一些动态加载的网页,可以使用中间件selenium进行请求,然后将获取到的数据交给引擎
from selenium import webdriver
import time
#自己创建一个响应,不要下载器的响应
from scrapy.http import HtmlResponse
from scrapy import signals
class SeleniumMiddleware(object):
def process_request(self, request, spider):
url = request.url
if 'daydata' in url:
driver = webdriver.Chrome()
driver.get(url)
time.sleep(3)
data = driver.page_source
driver.close()
# 创建响应对象
res = HtmlResponse(url=url, body=data, encoding='utf-8', request=request)
return res