При использовании scrapy shell я не получаю данные из response.xpath - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь очистить сайт для ставок.Однако, когда я проверяю полученные данные в оболочке Scrapy, я ничего не получаю.

Xpath к тому, что мне нужно, это: // * [@ id = "yui_3_5_0_1_1562259076537_31330"] и когда я пишу в оболочке этовот что я получаю:


In [18]: response.xpath ( '//*[@id="yui_3_5_0_1_1562259076537_31330"]')
Out[18]: []

Вывод [], но я ожидал, что смогу извлечь href.

Когда я использую инструмент проверки в Chrome, когда сайт все еще загружается, этот идентификатор выделяется фиолетовым цветом.Значит ли это, что сайт использует JavaScipt?И если это правда, является ли это причиной, по которой скрап не находит предмет и возвращает []?

1 Ответ

0 голосов
/ 05 июля 2019

Я пытаюсь очистить сайт только с помощью Scrapy, и это мой результат.

Это файл items.py

    import scrapy

    class LifeMatchsItem(scrapy.Item):

        Event = scrapy.Field() # Name of event
        Match = scrapy.Field() # Teams1 vs Team2
        Date = scrapy.Field()  # Date of Match

Это мойКод паука


    import scrapy
    from LifeMatchesProject.items import LifeMatchsItem


    class LifeMatchesSpider(scrapy.Spider):
        name = 'life_matches'
        start_urls = ['http://www.betfair.com/sport/home#sscpl=ro/']

        custom_settings = {'FEED_EXPORT_ENCODING': 'utf-8'}

        def parse(self, response):
            for event in response.xpath('//div[contains(@class,"events-title")]'):
                for element in event.xpath('./following-sibling::ul[1]/li'):
                    item = LifeMatchsItem()
                    item['Event'] = event.xpath('./a/@title').get()
                    item['Match'] = element.xpath('.//div[contains(@class,"event-name-info")]/a/@data-event').get()
                    item['Date'] = element.xpath('normalize-space(.//div[contains(@class,"event-name-info")]/a//span[@class="date"]/text())').get()
                    yield item

И вот результат

file.json

...