是否有格式指定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页。
答案 0 :(得分:0)
allow是一个正则表达式,你只是粘贴一个没有意义的完整网址。
allow(正则表达式(或列表)) - 一个正则表达式(或正则表达式列表),(绝对)URL必须匹配才能被提取。如果没有给出(或为空),它将匹配所有链接。
我看起来很清楚。
答案 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)