• 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),用来关闭浏览器
      • 在中间件中进行浏览器自动化的操作
  • 相关阅读:
    Poj 3287 Catch That Cow(BFS)
    Poj 1321 棋盘问题(搜索)
    Poj 2488 A Knight's Journey(搜索)
    解决ListView 缓存机制带来的显示不正常问题
    Poj 1631 Bridging signals(二分+DP 解 LIS)
    字符串相似度的几种衡量标准
    linux环回文件
    [转] CentOS---网络配置详解
    Dockerfile学习(二)
    Dockerfile学习(一)
  • 原文地址:https://www.cnblogs.com/straightup/p/13693437.html
Copyright © 2020-2023  润新知