在scrapy中指定Linkextractors中的规则

时间:2014-11-02 23:14:02

标签: python python-2.7 web-scraping scrapy

是否有格式指定scrapy中LinkExtractor的规则?我已阅读文档,但对我来说不是很清楚。在我的情况下,url链接值在第一页之后继续增加(类似于& pg = 2等等)。例如,见下文:

start_urls = ['http://www.examples.com']
rules= [Rule (LinkExtractor(allow=['www.examples.com/sports/companies?searchTerm=news+sports&pg=2']), 'parse_torrent')]

请告诉我是否有正确的方法来指定规则中的网址,以便我可以抓第1页,第2页...第100页。

2 个答案:

答案 0 :(得分:0)

allow是一个正则表达式,你只是粘贴一个没有意义的完整网址。

  

allow(正则表达式(或列表)) - 一个正则表达式(或正则表达式列表),(绝对)URL必须匹配才能被提取。如果没有给出(或为空),它将匹配所有链接。

Source

我看起来很清楚。

答案 1 :(得分:0)

如果要从起始页面中提取链接。 (对于你的情况是http://www.examples.com

您应该创建一个继承自CrawlSpider的蜘蛛,并使用以下正则表达式。

rules = (
   Rule(LinkExtractor(allow=[r'www.examples.com/sports/companies?searchTerm=news+sports&pg=\d+'], callback='parse_torrent'),
)

但好像你已经知道了你的网址规则,我建议你自己生成网址。

from scrapy.http.request import Request

def start_requests(self):
    for i in xrange(1, 100):
        url = 'www.examples.com/sports/companies?searchTerm=news+sports&pg=' + i
        yield Request(url=url, callback=parse_torrent)