#python #html #web-scraping #python-requests #console
Вопрос:
Я использую запросы python, и когда я пытаюсь найти цену на странице поиска Amazon, она возвращает неправильную цену. После многих часов расследования я выяснил, что если я использую:
with open("search_results.html", "w", encoding="utf-8") as f: f.write(response.text)
Он показывает мне то, что видит. Теперь у меня гораздо больше информации о том, что происходит. Мне кажется, что он каким-то образом «вращается» между первым и вторым результатом поиска. Если я запускаю его в первый раз в новом проекте, это дает мне правильную цену, но если я запускаю его во второй раз, он покажет мне второй результат. Это кажется довольно случайным, если это дает мне правильную или неправильную цену. Иногда это даст мне неправильную цену несколько раз подряд, а иногда только один. Это мой текущий код:
def old_price(): req = requests.Session() page = req.get(URL, headers=headers) soup = BeautifulSoup(page.content, 'html.parser') original_price = soup.find("span", class_='a-price-whole') print(original_price)
Он возвращает мне это в консоли:
lt;span class="a-price-whole"gt;91lt;span class="a-price-decimal"gt;,lt;/spangt;lt;/spangt;
В нем говорится, что в настоящее время цена составляет 91, но в настоящее время она составляет 158.
Более пристальный взгляд на консоль:
gt; python scrapertest.py lt;Response [200]gt; 91, gt; python scrapertest.py lt;Response [200]gt; 158, gt; python scrapertest.py lt;Response [200]gt; 91, gt; python scrapertest.py lt;Response [200]gt; 158, gt; python scrapertest.py lt;Response [200]gt; 158,
Как вы можете видеть в консоли, она дает мне либо 91, либо 158 в произвольное время. Что это такое и что я могу сделать, чтобы это исправить? Спасибо!