Dies ist mit der vorherigen Frage, die ich schrieb here verbunden. Ich versuche, die gleichen Daten von mehreren Seiten auf der gleichen Domain zu ziehen. Eine kleine Erklärung, ich versuche Daten wie offensive Werften, Umsätze usw. aus einer Menge verschiedener Box-Scores auf eine main page zu ziehen. Das Ziehen der Daten von einzelnen Seiten funktioniert genauso wie das Erzeugen der URLs, aber wenn ich versuche, die Spinne durch alle Seiten laufen zu lassen, wird nichts zurückgegeben. Ich habe viele andere Fragen durchgesehen, die die Leute gestellt haben und die Dokumentation, und ich kann nicht herausfinden, was nicht funktioniert. Code ist unten. Danke an alle, die im Voraus helfen können.Scrapy Ziehen Sie gleiche Daten aus mehreren Seiten
import scrapy
from scrapy import Selector
from nflscraper.items import NflscraperItem
class NFLScraperSpider(scrapy.Spider):
name = "pfr"
allowed_domains = ['www.pro-football-reference.com/']
start_urls = [
"http://www.pro-football-reference.com/years/2015/games.htm"
#"http://www.pro-football-reference.com/boxscores/201510110tam.htm"
]
def parse(self,response):
for href in response.xpath('//a[contains(text(),"boxscore")]/@href'):
item = NflscraperItem()
url = response.urljoin(href.extract())
request = scrapy.Request(url, callback=self.parse_dir_contents)
request.meta['item'] = item
yield request
def parse_dir_contents(self,response):
item = response.meta['item']
# Code to pull out JS comment - https://stackoverflow.com/questions/38781357/pro-football-reference-team-stats-xpath/38781659#38781659
extracted_text = response.xpath('//div[@id="all_team_stats"]//comment()').extract()[0]
new_selector = Selector(text=extracted_text[4:-3].strip())
# Item population
item['home_score'] = response.xpath('//*[@id="content"]/table/tbody/tr[2]/td[last()]/text()').extract()[0].strip()
item['away_score'] = response.xpath('//*[@id="content"]/table/tbody/tr[1]/td[last()]/text()').extract()[0].strip()
item['home_oyds'] = new_selector.xpath('//*[@id="team_stats"]/tbody/tr[6]/td[2]/text()').extract()[0].strip()
item['away_oyds'] = new_selector.xpath('//*[@id="team_stats"]/tbody/tr[6]/td[1]/text()').extract()[0].strip()
item['home_dyds'] = item['away_oyds']
item['away_dyds'] = item['home_oyds']
item['home_turn'] = new_selector.xpath('//*[@id="team_stats"]/tbody/tr[8]/td[2]/text()').extract()[0].strip()
item['away_turn'] = new_selector.xpath('//*[@id="team_stats"]/tbody/tr[8]/td[1]/text()').extract()[0].strip()
yield item
Wow, das ist lächerlich nervig. Gut zu wissen, dass ich die Dinge sonst richtig gemacht habe. Vielen Dank. – Jeff