Соскрести немного текста с помощью Scrapy - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь запрограммировать веб-сборщик, который собирает курсы валют по сравнению с евро с веб-сайта https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html, и я смог заставить работать фактические курсы, но я также хотите, чтобы он пересмотрел действительные валюты (такие как USD, JPY и т. д. c.) и столкнулся с проблемой там. Я выяснил, что реальные валюты хранятся в классе «валюта», но понятия не имею, как заставить скребок поднять это. Мой код выглядит следующим образом:



class CurrencySpider(scrapy.Spider):
    name = 'currency'
    start_urls = [
        'https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html'
    ]

    def parse(self, response):
        test = response.css('div.forextable')
        currency = test.css('div.forextable::text').extract()
        rate = response.css('.rate::text').extract()
        yield {'currencytext': currency}
        yield {'rate': rate}

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Для извлечения сокращений валют (например, USD, JPY, ...) с помощью css -селекторов используйте:
currency_short = response.css('.currency a::text').extract()

Тот же результат, но с селекторами xpath:
currency_short = response.xpath('//td[@class="currency"]//text()').extract()

Для извлечения полного названия валют (т. Е. Доллар США, японский йе, ...) с помощью css -селекторов используйте:
currency_long = response.css('.forextable .alignLeft a::text').extract()

То же результат, но с xpath-селекторами:
currency_long = response.xpath('//td[@class="alignLeft"]//text()').extract()

SelectorGadget - хороший интерактивный инструмент для поиска искомого селектора. Вы можете использовать его либо через расширение Chrome, либо использовать метод закладки, описанный на их веб-сайте.

В качестве альтернативы вы также можете использовать встроенные инструменты из вашего браузера. Например, в Firefox просто щелкните правой кнопкой мыши на интересующем элементе и выберите «Проверить элемент». Это откроет Инспектора и направит вас прямо к интересующему элементу с его классами, идентификаторами и т. Д.

1 голос
/ 02 мая 2020

Вы можете видеть, что все валюты находятся под одним и тем же <td id="ACRONYM" class="currency">. Использование xpath может помочь вам в этом.

 currency = response.xpath('//td[@class="currency"]//text()').extract()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...