码迷,mamicode.com
首页 > 其他好文 > 详细

Scrapy爬虫框架使用Ⅱ

时间:2020-09-21 11:50:33      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:pos   提交   核心   loader   功能   一个   提取   传递   rap   

  • 基于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),用来关闭浏览器
    • 在中间件中进行浏览器自动化的操作

Scrapy爬虫框架使用Ⅱ

标签:pos   提交   核心   loader   功能   一个   提取   传递   rap   

原文地址:https://www.cnblogs.com/straightup/p/13693437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!