您的位置:首页 > 新闻资讯 >文章内容
更换代理IP后启动爬虫,是否能断点续传?
来源:互联网 作者:admin 时间:2019-04-09 17:46:56

  更换代理IP后启动爬虫,是否能断点续传?有时候被封IP,导致爬虫程序中断,如果再次启动非常的麻烦,重新再来也没有效果,是否能够在更换新的IP地址后,再从断的地方开始呢?scrapy支持断点续传吗?


  一般Web服务器会默认开启对断点续传的支持。所以,如果直接通过Web服务器来提供文件的下载,可以不用做特别的配置,就能享受断点续传。还是尽可能的选择高匿名度的代理ip,不容易暴露,比如一直在用的机灵代理,匿名性就很好的。


  在scrapy中我想不用多说了,用过scrapy框架的应该都知道,本身scrapy就已经内置了一个参数jobs持久化设置


  要启用持久化支持,你只需要通过 JOBDIR 设置 job directory 选项。这个路径将会存储 所有的请求数据来保持一个单独任务的状态(例如:一次spider爬取(a spider run))。必须要注意的是,这个目录不允许被不同的spider 共享,甚至是同一个spider的不同jobs/runs也不行。也就是说,这个目录就是存储一个 单独 job的状态信息。


  怎么使用


  要启用一个爬虫的持久化,运行以下命令:


  scrapy crawl somespider -s JOBDIR=crawls/somespider-1


  然后,你就能在任何时候安全地停止爬虫(按Ctrl-C或者发送一个信号)。恢复这个爬虫也是同样的命令:


  scrapy crawl somespider -s JOBDIR=crawls/somespider-1


  保持状态


  有的时候,你希望持续保持一些运行长时间的蜘蛛的状态。这时您可以使用 spider.state 属性, 该属性的类型必须是dict. scrapy提供了内置扩展负责在spider启动或结束时,从工作路径(job directory)中序列化、存储、加载属性。


  下面这个例子展示了使用spider state的回调函数(callback)(简洁起见,省略了其他的代码):


更换代理IP后启动爬虫,是否能断点续传?


  持久化的一些坑


  如果你想要使用Scrapy的持久化支持,还有一些东西您需要了解:


  Cookies的有效期


  Cookies是有有效期的(可能过期)。所以如果你没有把你的爬虫及时恢复,那么他可能在被调度回去的时候 就不能工作了。当然如果你的爬虫不依赖cookies就不会有这个问题了。


  请求序列化


  请求是由 pickle 进行序列化的,所以你需要确保你的请求是可被pickle序列化的。 这里最常见的问题是在在request回调函数中使用 lambda 方法,导致无法序列化。


  例如, 这样就会有问题:


更换代理IP后启动爬虫,是否能断点续传?


  更换代理IP后启动爬虫,是否能断点续传?scrapy支持断点续传,无需从头开始,可以参考上文。


相关文章内容简介
推荐阅读
  • 13 2019-06
    独享代理IP池有什么优势?

    独享代理IP池有什么优势?一样东西,如果是共享的,怎么也会影响到使用,没有那么方便,估计也可能会影响到效果的。那么如果独享呢?我们以代理IP池为例,看看独享代理IP池有什么优势?

  • 23 2019-04
    爬虫代理的选择要点有哪些?

    爬虫代理的选择要点有哪些?在当今这个社会,数据的获取是需要付出成本的,各种限制也需要使用工具吧,爬虫代理的使用也是要花钱的,那么这爬虫代理怎么选会比较好用呢?

  • 21 2019-12
    抢购就用代理IP!

    抢购就用代理IP!如果你对代理IP的理解认知还停留在,代理IP可以用来访问我们被限制的网站,那就OUT了,要知道现在是网络科技时代,网络瞬息万变,所以我们也要跟上网络的发展,时代的脚

  • 29 2020-09
    为什么要用HTTP代理IP

    代理IP是什么?对于一般人来说,代理IP可能一文不值,根本不知道它是什么,用来做什么;而对于从事互联网工作的人来说,它好比狙击步枪的瞄准镜,有它没它差距非常大。下面跟小编简单

  • 14 2019-10
    4步教你完成代理IP池框架

    代理IP是我们在爬虫过程中有效突破网站设置反爬虫策略的渠道,所以,在做一个爬虫项目之前,代理IP池的搭建是至关重要的。下面4个步骤帮助你了解如何生成一个代理IP池。

  • 20 2020-10
    找哪个换IP软件使用比较好

    网站都对IP访问有一定的限制,若是超过一定请求次数,就会对其进行屏蔽,那这样会导致请求中断,无法获取所有的信息,这如何解决呢?

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部