我是Scrapy的新手,我已经构建了一个蜘蛛,它首先在start_url中提取网址列表,浏览每个网址并抓取内容。
但是,我需要稍微改变新蜘蛛的逻辑。蜘蛛必须在start_url中提取url列表,必须访问每个url,并且从这里开始抓取内容之前必须提取并访问另一个url:
import scrapy
class KickerbotSpiderStats(scrapy.Spider):
name = 'matches-stats2'
allowed_domains = ['www.kicker.de']
start_urls = ['http://www.kicker.de/news/fussball/wm/spiele/weltmeisterschaft/2014/-1/0/spieltag.html']
# Step 1 // Go to Site with all matches and extract URL of each of them
def parse(self, response):
for match in response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "aligncenter", " " ))]//a/@href').extract():
yield scrapy.Request("http://www.kicker.de" + match, callback=self.parse_matchpage)
# Step 2 // From each match URL, get URL for match stats
def parse_matchpage(self, response):
for statsPage in response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "nav4tab-sel", " " ))]//a/@href').extract():
yield scrapy.Request("http://www.kicker.de" + statsPage, callback=self.parse_statspage)
# Step 3 // Parse Stats from match
def parse_statspage(self, response):
yield {
'matchId' : (response.url).split("/")[-2],
'local' : response.xpath('//*[(@id = "SpielpaarungLiveTitleRow")]//a/text()').extract_first().strip()
}
我在我的工作蜘蛛中添加了这个新步骤,但我没有收到任何数据。 Spider像以前一样爬行(200响应),但只是第一步,并没有浏览统计页面。我究竟做错了什么?