我正在开发一个站点地图蜘蛛。这个蜘蛛获取一个站点地图网址并抓取此站点地图中的所有网址。我想将网址数限制为100.
我无法使用CLOSESPIDER_PAGECOUNT
因为我使用XML导出管道。
似乎当scrapy进入pagecount时,它会停止包括XML生成在内的所有内容。所以XML文件没有关闭等等。它是无效的。
class MainSpider(SitemapSpider):
name = 'main_spider'
allowed_domains = ['doman.com']
sitemap_urls = ['http://doman.com/sitemap.xml']
def start_requests(self):
for url in self.sitemap_urls:
yield Request(url, self._parse_sitemap)
def parse(self, response):
print u'URL: {}'.format(response.url)
if self._is_product(response):
URL = response.url
ITEM_ID = self._extract_code(response)
...
你知道该怎么办吗?
答案 0 :(得分:0)
使用返回对我来说还不够,但是您可以将其与 CloseSpider 例外相结合:
# To import it :
from scrapy.exceptions import CloseSpider
#Later to use it:
raise CloseSpider('message')
I posted the whole code combining both on stackoverflow here
答案 1 :(得分:-1)
为什么蜘蛛初始化为0时没有count
属性,而parse
方法可以
def parse(self, response):
if self.count >= 100:
return
self.count += 1
# do actual parsing here