0


scrapy集成selenium

前言

 使用scrapy默认下载器---》类似于requests模块发送请求,不能执行js,有的页面拿回来数据不完整

 想在scrapy中集成selenium,获取数据更完整,获取完后,自己组装成 Response对象,就会进爬虫解析,现在解析的是使用selenium拿回来的页面,数据更完整

使用

集成selenium 因为有的页面,是执行完js后才渲染完,必须使用selenium去爬取数据才完
保证整个爬虫中,只有一个浏览器
只要爬取 下一页这种地址,使用selenium,爬取详情,继续使用原来的

第一步:在爬虫类中写

from selenium import webdriver
class CnblogsSpider(scrapy.Spider):
    bro = webdriver.Chrome(executable_path='./chromedriver.exe')
    bro.implicitly_wait(10)
    def close(spider, reason):
        spider.bro.close() #浏览器关掉

第二步:在中间件中

 def process_request(self, request, spider):
        # 爬取下一页这种地址---》用selenium,但是文章详情,就用原来的
        if 'sitehome/p' in request.url:
            spider.bro.get(request.url)
            from scrapy.http.response.html import HtmlResponse
            response = HtmlResponse(url=request.url, body=bytes(spider.bro.page_source, encoding='utf-8'))
            return response
        else:
            return None
标签: scrapy selenium

本文转载自: https://blog.csdn.net/xiaolisolovely/article/details/131730166
版权归原作者 淘淘桃 所有, 如有侵权,请联系我们删除。

“scrapy集成selenium”的评论:

还没有评论