0
目前网站我在我的scrapy蜘蛛一个规则:Scrapy蜘蛛:不要爬网在列表中
rules = [Rule(SgmlLinkExtractor(allow=['/item/\d+']), 'parse_item')]
这意味着,像www.site.com/item/所有链接123654得到提取,然后将被解析。 /item/后面的数字是唯一的ID。 spidering的结果将被存储在一个json文件中。
另外,我有一个CSV文件与已经爬,我不希望这些网站获得,以降低服务器负载再次爬到20万左右的ID。因此,可以说我创建这个CSV等构成的蟒蛇名单:
dontparse = [123111, 123222, 123333, 123444, ...]
现在我不希望这些ID只是被忽略,如果这些链接被发现爬行过程中,我希望他们能够被存储在JSON文件,只是与信息available = true。 这是如何实现的?我应该在* parse_item *函数中添加第二条规则吗?
EDIT
我parse_item函数看起来像
def parse_item(self, response):
sel = Selector(response)
item = MyItem()
item['url'] = response.url
item['name'] = sel.xpath("//h1/text()").extract()
return item
我已经与scrapy没有经验,但为什么dont't你只筛选出事后使用'''dontparse'''列表中的'' 'if'''子句?或者你可以使用SgmlLinkExtractor级的参数之一,在这里看到:http://doc.scrapy.org/en/latest/topics/link-extractors.html(fe deny_domain等)(顺便说一句:你应该公开更多的代码,ESP。的'''parse_item'''功能,得到了详细的解答) – dorvak