我正在使用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
有谁能告诉我我做错了什么?
答案 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一周,所以我可能错了......