【发布时间】:2015-07-06 12:43:11
【问题描述】:
我在使用 Scrapy 时遇到问题。我需要能够为每个给定的 url 报废多达 1000 个内部链接的代码。我的代码在命令行运行时可以工作,但蜘蛛不会停止,只会收到消息。
我的代码如下:
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.item import Item, Field
from scrapy.contrib.closespider import CloseSpider
class MyItem(Item):
url= Field()
class MySpider(CrawlSpider):
name = 'testspider1'
allowed_domains = ['angieslist.com']
start_urls = ['http://www.angieslist.com']
rules = (Rule(SgmlLinkExtractor(), callback='parse_url', follow=True), )
def parse_url(self, response):
item = MyItem()
item['url'] = response.url
scrape_count = self.crawler.stats.get_value('item_scraped_count')
print scrape_count
limit = 10
if scrape_count == limit:
raise CloseSpider('Limit Reached')
return item
【问题讨论】:
-
你确定它不会停止吗?我相信在收到 CloseSpider 后,scrapy 将继续处理已经请求的项目。我的意思是,它不会立即停止,但不会请求新项目
-
This 你可能会很感兴趣。
-
你是对的,它确实停止了。但是,我计划扩大这个过程,并希望删除任何不必要的处理。我希望有某种方法可以“停在一角钱上”。可以这么说。
-
还有,你为什么不用doc.scrapy.org/en/latest/topics/…
-
弗兰克,我想你找到了我需要的东西。我只是想弄清楚如何实现/测试它。阿里克,我试试看。