Запрос Scrapy возвращает неправильную валюту

#python #web-scraping #scrapy

#python #веб-очистка #scrapy

Вопрос:

Я пытаюсь очистить этот веб-сайт для получения информации. Все в порядке, за исключением цены. На веб-сайте и в html цена указана в долларах США. Но когда я запускаю приведенный ниже код, он возвращает его в фунтах стерлингов.

 price = response.xpath('//*[@id="page"]/div[2]/div/div[1]/div[2]/div/div[2]/div/p').extract()
 

Я пробовал разные варианты следующего:

 headers = {
    'USER_AGENT': "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
    'Accept-Language': 'en-US,en;q=0.9',
}
 
 
def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url=url, headers=headers, callback=self.parse, cookies={'hn.globale.currency': 'USD', 'hn.globale.country': 'US'})
 

Но он всегда выдается как GBP. Как я могу изменить его, чтобы получить USD? Я также могу получить данные о продукте в формате json, но там все также в фунтах стерлингов.

Комментарии:

1. docs.scrapy.org/en/latest/topics/dynamic-content.html

2. Я прочитал страницу, но я все еще не совсем понимаю, что с этим делать. Хотите уточнить?

3. Не могли бы вы описать, на какой части процесса, описанного в документации, вы были заблокированы? Возможно, мы сможем соответствующим образом улучшить документацию.

Ответ №1:

Вся эта страница создается динамически с помощью Javascript и настраивается «на лету». Если вы посмотрите на страницу, вы увидите выделение «USD» в верхнем левом углу, но этого текста нет в источнике. Если вы не выполняете Javascript при очистке, вы не сможете получить конверсии. Если у них есть JSON API, должен быть способ его настройки, но они должны были бы сказать вам об этом.

Комментарии:

1. Вы хотите сказать, что невозможно изменить валюту через заголовки?

2. Иди посмотри на страницу. Там крошечный кусочек HTML и гора Javascript. Вся работа выполняется на Javascript. Где-то в Javascript они заполняют и заполняют валюту. Если вы не выполняете Javascript, это не будет сделано.

3. Итак, вы знаете, как я могу это сделать?

4. Не так просто. Честно говоря, было бы намного проще посмотреть текущую конвертацию GBP / USD и изменить текст самостоятельно. scrapingbee.com/blog/scrapy-javascript