当前位置: 首页 > article >正文

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


http://www.kler.cn/a/37441.html

相关文章:

  • fastapi docs打开为空白解决办法
  • TCP协议3次握手4次挥手
  • JVM学习笔记(二)内存结构
  • 细节:双花括号({{ ... }})在Vue.js中的用法
  • 5分钟构建电商API接口服务 | python小知识
  • 部署 CNI网络组件
  • Container killed by YARN for exceeding memory limits
  • Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).
  • kafka(一)
  • Databricks 入门之sql(一)基础查询
  • layui入门增删改查
  • Winform实现简历生成器(Excel版)
  • 《消失的她》豆瓣短评数据分析
  • 《刷题2》场景模拟
  • 自学网络安全(黑客)
  • docker dockerfile部署contos7、nginx
  • 相机图像质量研究(2)ISP专用平台调优介绍
  • 2023 node 接入腾讯云短信服务,实现发送短信功能
  • SpringCloud微服务(三)RabbitMQ、SpringAMQP、elasticsearch、DSL、MQ、ES详细介绍
  • webpack项目和vue项目发布,浏览器存在缓存