多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
为什么要动态加载? 有些网站的数据是通过异步加载的,需要等待一定的时间后才能抓取到网页的html结构,所以我们需要等待一定的时间才能从捕捉到我们想要的数据。 <br/> 实现步骤如下:就是定义个中间件 **1. 在`middlewares.py`中定义 SeleniumMiddleware 中间件** ```python class SeleniumMiddleware: def process_request(self, request, spider): url = request.url # 使用selenium是非常消耗内存的,所以我们只在需要动态加载的url中进行加载 if 'booksort' in url: driver = webdriver.Chrome() driver.get(url) time.sleep(3) # 提醒:page_source是获取等待一定时间后的网页源码,不是获取静态页面的源码 data = driver.page_source driver.close() # 创建响应对象 res = HtmlResponse(url=url, body=data, encoding='utf-8', request=request) return res return None def process_response(self, request, response, spider): return response ``` <br/> **2. 在`settings.py`中启动 SeleniumMiddleware 中间件** ```python DOWNLOADER_MIDDLEWARES = { "jdbookspro.middlewares.SeleniumMiddleware": 303, } ```