Соскоб цены с BeautifulSoup4 в Python3 - PullRequest
0 голосов
/ 19 апреля 2020

Я новый соскоб с Python и BeautifulSoup4. Также у меня нет знаний о HTML. На практике я пытаюсь использовать его на веб-сайте Carrefour для извлечения цены и цены за килограмм продукта, который я ищу для кода EAN. Мой код:

barcodes = ['5449000000996']

for barcode in barcodes:
    url = 'https://www.carrefour.es/?q=' + barcode
    html = requests.get(url).content
    bs = BeautifulSoup(html, 'lxml')

    searchingprice = bs.find_all('strong', {'class':'ebx-result-price__value'})
    print(searchingprice)

    searchingpricerperkg = bs.find_all('span', {'class':'ebx-result__quantity ebx-result-quantity'})
    print(searchingpricerperkg)

Но я не получаю никакого результата

Вот скриншот кода HTML:

Website screenshot

Что я делаю не так? Я пытался с другим сайтом, и, кажется, работает

1 Ответ

0 голосов
/ 19 апреля 2020

Проблема здесь в том, что вы очищаете страницу с Javascript -генерированным контентом. По сути, на странице, которую вы захватываете с запросами, на самом деле нет того, что вы захватываете с нее - у нее есть набор javascript. Когда ваш браузер переходит на страницу, он запускает javascript, который генерирует контент - так что страница, которую вы видите в отрендеренной версии в вашем браузере, - это не то же самое, что возвращается с самой страницы. На странице содержатся инструкции для вашего браузера, чтобы написать страницу, которую вы видите .

Если вы только тренируетесь, вы можете просто попробовать другой источник, чтобы почерпнуть, но почистить На этой странице вам нужно найти другие решения, которые могут обрабатывать javascript сгенерированный контент:

Web-scraping JavaScript страница с Python

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

В качестве упражнения, go впереди, и BS4 преттифицирует и распечатывает полученную страницу. Вы увидите, что на этой странице есть запросы в другие места, чтобы получить информацию, которую вы запрашиваете. Возможно, вы сможете изменить ваш запрос не на go, а на страницу, где вы просматриваете информацию, а на место, откуда эта страница получает данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...