1
zhijiansha 2018-01-25 23:24:29 +08:00 via iPhone
关注
|
2
rabbbit 2018-01-25 23:28:07 +08:00
raise CloseSpider()
|
3
ChenJinluo 2018-01-26 00:31:16 +08:00 1
scrapy.Request()有个参数 errback。比如 scrapy.Request(self.url, self.parse, errback=self.handle_error, dont_filter=True) ,当出现错误时就会调用 handle_error()这个函数,在里面关爬虫就可以了。 具体用法可以去官方文档看 Requests and Responses 一节,也可以通过搜索框搜索 errback。
|
4
cz5424 2018-01-26 01:01:36 +08:00 via Android
同意楼上,也可以加一个中间件结束
|
5
OldPanda 2018-01-26 06:24:28 +08:00
三楼和四楼正解,我想补充一下另一个角度的解决方案,就是用代理。之前我买过[这家]( https://scrapinghub.com/crawlera)的代理,很好用,与 scrapy 的集成度也高,这是一个简单教程: https://support.scrapinghub.com/support/solutions/articles/22000188399-using-crawlera-with-scrapy,从来没有被封过,缺点是有点贵,最便宜的也要 25 刀一个月。
不过我在网上看到有这样一个 scrapy 的代理中间件: https://github.com/aivarsk/scrapy-proxies,需要自己做一些工作,比如去搜集一些免费的代理等等。我没用过这个中间件,不清楚是否好用,但代理既然是免费的,所以质量嘛。。凭楼主自己权衡了 :) |
6
toono 2018-01-26 08:40:54 +08:00
赞同 5 楼的积极解决问题的方案
|
7
360safe OP 收到,谢谢大家。
通过大家的回复,我学习到了,自己对 scrapy 的了解仅仅是点,应该好好学习官方文档形成一个大的知识面。 5 楼的方案之前用过,因为价格原因,大大超出了预算。(我要抓取的数据是千万级反复过滤) |