scrapy提高篇之配置

scrapy提高篇之配置

增长并发

并发是指同时处理的request的数量。其有全局限制和局部(每一个网站)的限制。
Scrapy默认的全局并发限制对同时爬取大量网站的状况并不适用,所以您须要增长这个值。 增长多少取决于您的爬虫能占用多少CPU。 通常开始能够设置为 100 。不过最好的方式是作一些测试,得到Scrapy进程占取CPU与并发数的关系。 为了优化性能,您应该选择一个能使CPU占用率在80%-90%的并发数
setting.py文件中写上CONCURRENT_REQUESTS = 100,scrapy中默认的并发数是32html

下降log级别

当进行通用爬取时,通常您所注意的仅仅是爬取的速率以及遇到的错误。 Scrapy使用 INFO log级别来报告这些信息。为了减小CPU使用率(及记录log存储的要求), 在生产环境中进行通用爬取时您不该该使用 DEBUG log级别。 不过在开发的时候使用 DEBUG 应该还能接受。
setting.py文件中设置LOG_LEVEL = 'INFO'python

禁止cookies

除非您 真的 须要,不然请禁止cookies。在进行通用爬取时cookies并不须要, (搜索引擎则忽略cookies)。禁止cookies能减小CPU使用率及Scrapy爬虫在内存中记录的踪影,提升性能。
COOKIES_ENABLED = Falsegit

禁止重试

对失败的HTTP请求进行重试会减慢爬取的效率,尤为是当站点响应很慢(甚至失败)时, 访问这样的站点会形成超时并重试屡次。这是没必要要的,同时也占用了爬虫爬取其余站点的能力。github

RETRY_ENABLED = Falseshell

减小下载超时

若是您对一个很是慢的链接进行爬取(通常对通用爬虫来讲并不重要), 减少下载超时能让卡住的链接能被快速的放弃并解放处理其余站点的能力。cookie

DOWNLOAD_TIMEOUT = 15,其中15是设置的下载超时时间并发

禁止重定向

除非您对跟进重定向感兴趣,不然请考虑关闭重定向。 当进行通用爬取时,通常的作法是保存重定向的地址,并在以后的爬取进行解析。 这保证了每批爬取的request数目在必定的数量, 不然重定向循环可能会致使爬虫在某个站点耗费过多资源。app

REDIRECT_ENABLED = Falsescrapy

使用user_agent池

详细使用方法请看设置请求池编辑器

使用ip代理池

由于本人是学生党,所以暂时找到不到比较好的代理,因此这里只是写了一个通常的设置代理池的方法,不过在之后会写一个更好的代理池,用数据实现,详情请看代理ip设置方法

设置延迟

DOWMLOAD_DELY=3,设置延迟下载能够避免被发现

启用调试工具

命令行调试

  • scrapy shell url 查看网页,不过这种方式可能对于要请求头的网页不行,对于通常的网页仍是能够的

  • scrapy view shell 用来查看动态加载的网页,若是查看的网页用了动态加载,那么用这个命令行打开的网页就是不完整的,确定缺乏了什么

编辑器中的调试

在页面的任意位置添加以下代码

from scrapy.shell import inspect_response
def paser(self,response):
    inspect_response(response,self)     #当程序运行到这里就会跳出终端,而且在终端出现调试命令,固然这个能够随便写在哪里

暂停和恢复爬虫

初学者最头疼的事情就是没有处理好异常,当爬虫爬到一半的时候忽然由于错误而中断了,可是这时又不能从中断的地方开始继续爬,顿时感受内心日了狗,可是这里有一个方法能够暂时的存储你爬的状态,当爬虫中断的时候继续打开后依然能够从中断的地方爬,不过虽然说持久化能够有效的处理,可是要注意的是当使用cookie临时的模拟登陆状态的时候要注意cookie的有效期

只须要在setting.pyJOB_DIR=file_name 其中填的是你的文件目录,注意这里的目录不容许共享,只能存储单独的一个spdire的运行状态,若是你不想在从中断的地方开始运行,只须要将这个文件夹删除便可

固然还有其余的放法:scrapy crawl somespider -s JOBDIR=crawls/somespider-1,这个是在终端启动爬虫的时候调用的,能够经过ctr+c中断,恢复仍是输入上面的命令

不按照robots.txt

ROBOTSTXT_OBEY = False

配置请求头

只须要在settings中取消相应的设置便可

DEFAULT_REQUEST_HEADERS={{
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'User-Agent':'......'   #在此处设置
}}

更多文章请移步本人博客

相关文章
相关标签/搜索