在配置文件中修改相关参数:

  • 增加并发

    • 默认的scrapy开启的并发线程为32个,可以适当的进行增加,再配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。
  • 降低日志等级
    • 在scrapy运行的时候,会输出大量的日志信息,为了减少cpu的使用率,可以设置log输出信息为INFO或者ERROR.在配置文件中编写LOG_LEVEL = 'INFO'
  • 禁止cookie
    • 如果不是真的需要cookie,则在scrapy爬取数据的时候可以 禁止cookie从而减少CPU的使用率,提升爬虫效率,在配置文件中编写COOKIES_ENABLED= False
  • 禁止重试
    • 对失败的HTTP请求进行重新请求(重试),会减慢爬取速度。因此可以禁止重试,在配置文件中编写:RETRY_ENABLED = False
  • 减少下载超时
    • 如果对一个非常慢的链接进行爬取,减少下载超时可以让卡住的链接被快速放弃,从而提升爬取的效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 10 超时时间为10s

【补充】:

请求传参的的应用场景:

  解析的数据不在同一个页面中

  Request(callback,meta={})

下载中间件的用途:

  批量拦截请求(代理IP和UA)和响应(处理页面数据)

如何在scrapy使用selenium
  1.在spider的init方法中实例化一个浏览器对象
  2.在spider的closed方法中关闭浏览器对象
  3.在下载中间件类的process_response方法中接收spider中的浏览器对象
  4.处理执行相关自动化操作(发起请求,获取页面数据)
  5.实例化一个新的响应对象(from scrapy.http import HtmlResponse),且将页面数据存储到该对象中
  6.返回新的响应对象
  7.在配置文件中开启中间件

如何提升scrapy爬取数据的效率的更多相关文章

  1. 爬虫必知必会(6)_提升scrapy框架爬取数据的效率之配置篇

    如何提升scrapy爬取数据的效率:只需要将如下五个步骤配置在配置文件中即可 增加并发:默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_ ...

  2. scrapy爬取数据的基本流程及url地址拼接

    说明:初学者,整理后方便能及时完善,冗余之处请多提建议,感谢!   了解内容: Scrapy :抓取数据的爬虫框架     异步与非阻塞的区别   异步:指的是整个过程,中间如果是非阻塞的,那就是异步 ...

  3. 将scrapy爬取数据通过django入到SQLite数据库

    1. 在django项目根目录位置创建scrapy项目,django_12是django项目,ABCkg是scrapy爬虫项目,app1是django的子应用 2.在Scrapy的settings.p ...

  4. python之scrapy爬取数据保存到mysql数据库

    1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip inst ...

  5. 42.scrapy爬取数据入库mongodb

    scrapy爬虫采集数据存入mongodb采集效果如图: 1.首先开启服务切换到mongodb的bin目录下 命令:mongod --dbpath e:\data\db 另开黑窗口 命令:mongo. ...

  6. scrapy爬取数据进行数据库存储和本地存储

    今天记录下scrapy将数据存储到本地和数据库中,不是不会写,因为小编每次都写觉得都一样,所以记录下,以后直接用就可以了-^o^- 1.本地存储 设置pipel ines.py class Ak17P ...

  7. scrapy爬取数据保存csv、mysql、mongodb、json

    目录 前言 Items Pipelines 前言 用Scrapy进行数据的保存进行一个常用的方法进行解析 Items item 是我们保存数据的容器,其类似于 python 中的字典.使用 item ...

  8. scrapy爬取效率提升配置

    增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. 降低日志级别 ...

  9. 提高Scrapy爬取效率

    1.增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. 2.降低 ...

随机推荐

  1. beego 注解路由

    场景描述:使用注解路由,不起作用. 额外描述: 路由的添加都写在 main函数中了,同时未设置 beego.BConfig.RunMode ="dev"也未引入 :routers包 ...

  2. 【ABAP系列】SAP ABAP 关于FUNCTION-POOL的理解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 关于FUNCT ...

  3. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字

    ssm(Oracle)配置druid数据库连接池,正常启动项目,但是请求访问数据库时报错 “java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FR ...

  4. canvas基础知识

    canvas基础知识 ## CanvasDOM对象 #### 获取绘图环境```canvas.getContext();``` #### 设置宽和高```canvas.width = 500;canv ...

  5. tensorflow 2.0 技巧 | 自定义tf.keras.Model的坑

    自定义tf.keras.Model需要注意的点 model.save() subclass Model 是不能直接save的,save成.h5,但是能够save_weights,或者save_form ...

  6. selenium—隐式等待和显式等待

    一.隐式等待和显式等待的区别 隐式等待:是整个页面的等待.设置一个最长的等待时间,在规定时间内整个页面加载完成,则执行下一步,否则继续等待直到最长等待时间结束. 显式等待:是针对某个元素的等待.在设置 ...

  7. 模板中for 的使用

    from flask import Flask,render_template app = Flask(__name__) app.config.update( DEBUG = True, ) @ap ...

  8. c++自定义时间输出

    #include <time.h> time_t timep; struct tm *p; time(&timep); p=localtime(&timep); int l ...

  9. [转帖]什么是 LLVM?Swift, Rust, Clang 等语言背后的支持

    要了解用于以编程方式生成机器原生代码的编译器框架是如何让新语言的推出以及对现有的语言进行增强比以往更加容易了. https://www.oschina.net/translate/what-is-ll ...

  10. Windows2012r2 安装SQLSERVER2017 与 SQLSERVER2016 的错误提示解决KB2919355 以及 KB2919442

    1. win2012r2 安装时 总是提示: 然后费了半天劲 下载下来又提示 找了一下 需要先安装这么一个补丁才可以 KB2919442 然后才能安装上 KB2919355 然后就可以正常安装了: