• Scrapy爬虫框架使用Ⅱ


    • 基于Spider父类进行全站数据的爬取

      • 全站数据的爬取:将所有页码对应的页面数据进行爬取
      • 手动请求的发送(get):
        yield scrapy.Request(url,callback)
      • 对yield的总结:
        • 向管道提交item对象 yield item
        • 手动请求发送 yield scrapy.Request(url,callback)
      • 手动发起post请求:
        yield scrapy.FormRequest(url,formdata,callback) formdata是一个字典(请求数据)
    • scrapy五大核心组件

      • 引擎(Scrapy)
        • 用来处理整个系统的数据流处理,触发事务(框架核心)
      • 爬虫(Spiders)
        • 主要干活的,用于从特定网页中提取自己需要的信息,即所谓的实体(item),用户也可以从中提取出链接,让Srapy进一步爬取
      • 调度器(Scheduler)
        • 用来接收引擎发货来的请求,压入队列中,在引擎再次请求的时候返回.url的优先队列,由它调度下一个要抓取的网站,同时去重
      • 下载器(Downloader)
        • 用于下载网页内容,并将网页内容返回给Spider(异步的主要体现,基于twisted实现)
      • 管道(Pipeline)
        • 负责处理爬虫从网页中抽取的实体,主要的功能是持久化存储,验证实体的有效性,清除不需要的信息
    • scrapy的请求传参

      • 作用: 实现深度爬取
      • 使用场景: 如果使用scrapy爬取的数据没有存在同一张页面
      • 传递item: yield scrapy.Request(url,callback,meta={'item':item})
      • 接收item: response.meta
    • 提升scrapy爬取数据的效率

      • 在配置文件settings.py中进行相关的配置
        增加并发:
        默认scrapy开启的并发线程为32个,可以适当增加.
        CONCURRENT_REQUESTS = 100 (将并发设置为100)
        降低日志级别:
        LOG_LEVEL = 'INFO'
        禁止cookie:
        如果不是真的需要cookie,可以禁止cookie来减少CPU的使用率
        COOKIES_ENABLED = False
        禁止重试:
        对失败的HTTP进行重新请求会减慢爬取速度
        RETRY_ENABLED = False
        减少下载超时:
        如果对一个非常慢的链接进行爬取,减少下载超时可以让被卡住的链接快速放弃
        DOWNLOAD_TIMEOUT = 10 (超时时间为10s)
    • scrapy中间件

      • 爬虫中间件(引擎和爬虫之间)
      • 下载中间件(引擎和下载器之间) ***
        • 作用:批量拦截所有的请求和响应
        • 为什么拦截请求?
          • 篡改请求头信息(UA伪装)
          • 修改请求对应ip(代理)
          • 篡改请求的url
        • 为什么拦截响应?
          • 篡改响应数据
          • 篡改响应对象 *
    • selenium在scrapy中的使用流程

      • 在爬虫类中定义一个bro的属性,就是实例化的浏览器对象
      • 在爬虫类中重写父类的一个closed(self,spider),用来关闭浏览器
      • 在中间件中进行浏览器自动化的操作
  • 相关阅读:
    angular运行报错“Cannot find module 'ng2-translate'.”
    切换分支
    下载angular项目报错[ERROR] ionic-app-scripts has unexpectedly closed (exit code 1).
    通过原生SQL判断数据是否存在
    多图合并一张长图脚本
    科大讯飞--新冠肺炎检测赛道第八分享
    Mysql定时任务
    Mysql导出数据结构 or 数据
    G6Editor 边的参数配置
    百度坐标转腾讯坐标
  • 原文地址:https://www.cnblogs.com/straightup/p/13693437.html
Copyright © 2020-2023  润新知