Проверяющий элемент отличается от того, что возвращает BeautifulSoup / Selenium

1

Я пытаюсь сделать скребки для нескольких сайтов, но я столкнулся с проблемой для одного конкретного сайта. При проверке цены десятичный знак показывает "56", но когда я загружаю HTML с помощью BeautifulSoup, он возвращает 16. Эта же проблема возникает и для других продуктов.

Ниже вы можете увидеть мой код:

from bs4 import BeautifulSoup
import requests

myProxy = {"http"  : "http://10.120.118.49:8080", "https"  : 
"https://10.120.118.49:8080"}

url = 'https://shop.rewe.de/coca-cola-4x1-5l/PD6731201'

page = requests.get(url, proxies = myProxy)
soup = BeautifulSoup(page.text, 'html.parser')

predecimal = soup.find('span', attrs={'class': 'pd-price__predecimal'})
predec = predecimal.text.strip()

separator = soup.find('span', attrs={'class': 'pd-price__separator'})
sep = separator.text.strip()

decimal = soup.find('span', attrs={'class': 'pd-price__decimal'})
dec = decimal.text.strip()

price = str(predec) + str(sep) + str(dec)

print(price)

Вышеприведенный код возвращает 5,16, тогда как цена, указанная на веб-сайте, составляет 5,56. Для некоторых других сайтов я успешно использовал Selenium вместо этого, но в этом случае он все равно возвращает тот же номер. Любая помощь будет принята с благодарностью!

  • 0
    Возможно ли, что 5,56 просто в кеше вашего браузера, потому что они только начали продажи сегодня или что-то в этом роде?
  • 0
    Я так не думаю, так как цена была неизменной в течение некоторого времени. Также показывает одинаковую цену на разных устройствах.
Теги:
python-3.x
web-scraping
selenium
beautifulsoup

1 ответ

0

Как уже упоминалось, я также пробовал с Selenium, используя следующий код:

driver.get('https://shop.rewe.de/coca-cola-4x1-5l/PD6731201')
xpath = '//*[@class="pd-PriceInformation"]/mark'
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))
price = driver.find_elements_by_xpath(xpath)
for p in price:
    print(p.text)

Это возвращает "ab 5, 16 €", поэтому в основном то же самое, что и при использовании BeautifulSoup. При попытке использовать тот же код для веб-сайта https://shop.rewe.de/vio-bio-limo-orange-4x1l/PD2455462 он вместо этого возвращает "ab 5, 96 €", что также неверно, так как цена 5, 56 в этом случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню