Scrapy没有抓取所有链接

时间:2014-04-04 12:11:24

标签: regex scrapy web-crawler

我正在使用Scrapy抓取并废弃固定域的网站。我想爬进与固定正则表达式匹配的站点,而忽略其余的。该代码运行良好,但只返回至少1000页的10-15页。代码是:

name = "xyz"
allowed_domains = ["xyz.com"]
start_urls = ["http://www.xyz.com"] 
rules = (Rule(SgmlLinkExtractor(allow=[r'\/V-\d{7}\/[\w\S]+']),callback='parse_item'),)



def parse_item(self, response):
 sel = Selector(response)

 title = sel.xpath("//h1[@class='no-bd']/text()").extract()
 print title

有谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:0)

我不认为您的代码存在问题,但您抓取的网站在给定时间内从特定IP处理的请求数量也有限制。你可以尝试在两者之间实现一些sleep(2)次调用,看看是否有任何区别。

答案 1 :(得分:0)

如果您提供回调,Scrapy会假设您将从解析函数返回Request个对象的列表。如果您确定它会自动关注链接,请在规则中添加follow=True

另请注意,这只会跟随与您指定的正则表达式匹配的链接。如果您要抓取整个网站,并仅解析与正则表达式匹配的链接,请添加其他规则以遵循所有内容:

rules = (Rule(SgmlLinkExtractor(allow=[r'\/V-\d{7}\/[\w\S]+']),
              callback='parse_item'), 
              follow=True),
         Rule(SgmlLinkExtractor()),
        ) 

我一直只使用Scrapy一周,所以我可能错了......