Я буду царапать некоторые данные с squawka.com с помощью scrapy. Код показан bewlow. Сначала я перехожу на страницу результатов. Здесь я просматриваю подробные ссылки на статистику матча из немецкой бундеслиги, а также просматривает все ссылки на страницы и отправляет запрос. Все работает отлично, но только в цикле «для лиги в лигасе» я делаю запрос, который не работает нормально, из-за динамического материала. Если ссылка загружена, я могу очистить имена команд, баллы, дату, название арены, но я не могу царапать, например. Выстрелы для домашней команды (item ['ShotsA'] = response.xpath ("// div [@ id = 'mc-stat-shot']/div/div [@ class = 'team2-data']/текст() "). extract() пуст, когда я соскабливаю) из-за динамического поведения. Я пробовал некоторые вещи с селеном без успеха. Может ли кто-нибудь помочь мне с запросом или с селеном?Scrapy crawl soccer статистика с динамическим контентом
import scrapy
from soccer.items import SoccerItem
from selenium import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
class SquawkaSpider(scrapy.Spider):
name = "soccer"
allowed_domains = ["squawka.com"]
start_urls = ["http://www.squawka.com/match-results"]
def __init__(self):
#self.driver = webdriver.Chrome(executable_path='/Users/fabian/chromedriver')
#self.driver = webdriver.Firefox()
def parse(self, response):
#self.driver.get("response.url")
#self.driver.find_element_by_xpath("//*[@id='league-filter-list']/option[contains(text(), 'Top 5 European Leagues')]").click()
Matches = response.xpath("//tr[@class='match-today']")
counter = response.xpath("//div/center/div[@id='sq-pagination']/span/span[@class='page-numbers current']/text()").extract()[0]
if counter == "1":
yield scrapy.Request(url="http://www.squawka.com/match-results?ctl=22_s2014", cookies={'firsttime_new': '1', 'sqhome_competition': '126', 'sqhome_competitionidinfeed': '22', 'sqhome_competitionteam': '0', 'sqhome_seasonid': '2014', 'timeZone': '2.0'}, callback=self.parse)
for Match in Matches:
Ligas = Match.xpath("td[@class='match-league']/a/text()").extract()
for Liga in Ligas:
if Liga == "Bundesliga":
Matchlinks = Match.xpath("td[@class='match-centre']/a/@href").extract()
yield scrapy.Request(Matchlinks[0], callback=self.parse_match_link)
if counter == "1":
page = response.xpath("//div/center/div[@id='sq-pagination']/span/a[@class='pageing_text_arrow'][1]/@href")
if counter != "1":
page = response.xpath("//div/center/div[@id='sq-pagination']/span/a[@class='pageing_text_arrow'][3]/@href")
if page:
next = page.extract()
yield scrapy.Request(next[0], cookies={'firsttime_new': '1', 'sqhome_competition': '126', 'sqhome_competitionidinfeed': '22', 'sqhome_competitionteam': '0', 'sqhome_seasonid': '2014', 'timeZone': '2.0'}, callback=self.parse)
def parse_match_link(self, response):
item = SoccerItem()
item['TeamH'] = response.xpath("//div[@id='team1']/ul[@class='team-lineup']/li[@id='team1-select']/text()").extract()
item['GoalH'] = response.xpath("//div[@id='sq-mc-top-header']/div[@id='mc-header-team-1']/div[@class='team-score'][1]/span/text()").extract()
item['ShotsH'] = response.xpath("//div[@id='mc-stat-shot']/div/div[@class='team1-data']/text()").extract()
item['TeamA'] = response.xpath("//div[@id='team2']/ul[@class='team-lineup']/li[@id='team2-select']/text()").extract()
item['GoalA'] = response.xpath("//div[@id='sq-mc-top-header']/div[@id='mc-header-team-2']/div[@class='team-score'][1]/span/text()").extract()
item['ShotsA'] = response.xpath("//div[@id='mc-stat-shot']/div/div[@class='team2-data']/text()").extract()
item['Date'] = response.xpath("//div[@id='sq-mc-top-header']/div[@id='mc-header-date']/text()").extract()
item['Stadium'] = response.xpath("//div[@id='sq-mc-top-header']/div[@id='mc-header-stadium']/text()").extract()
yield item
#self.driver.get(response.url)
@ Javier Ayres! Спасибо за Ваш ответ. У меня был lokok В инструменте devoloper, но есть много запросов и не найти полезных вещей. Это одна из ссылок http://b-liga.squawka.com/1fc-kln-vs-vfl-wolfsburg/23-05-2015/german-bundesliga/matches, и оттуда я хочу очистить снимки и другие вещи. Где я могу найти более подробную информацию в инструменте devolpoer из chrome или firefox с firebug, который требует важного? –
Фильтр по столбцу типа. Вам не нужны запросы, которые возвращают CSS, Javascript, изображения и т. Д. Вам, вероятно, нужны запросы, которые возвращают JSON, HTML или XML. Оттуда вам нужно будет посмотреть каждый ответ, чтобы узнать, есть ли это тот контент, который вы ищете. – lufte