#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