BeautifulSoup не может найти HTML элемент по классу - PullRequest
0 голосов
/ 21 июня 2020

Это веб-сайт, который я пытаюсь очистить с помощью Python:

https://www.ebay.de/sch/i.html?_from=R40&_nkw=iphone+8&_sacat=0&LH_Sold=1&LH_Complete=1&rt=nc&LH_ItemCondition=3000

Я хочу получить доступ к Элемент ul с классом srp-results srp-list clearfix. Это то, что я пробовал с запросами и BeautifulSoup:

from bs4 import BeautifulSoup
import requests

url = 'https://www.ebay.de/sch/i.html?_from=R40&_nkw=iphone+8&_sacat=0&LH_Sold=1&LH_Complete=1&rt=nc&LH_ItemCondition=3000'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')

uls = soup.find_all('ul', attrs = {'class': 'srp-results srp-list clearfix'})

И вывод всегда представляет собой пустую строку. Я также попытался очистить веб-сайт с помощью Selenium Webdriver и получил тот же результат.

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вероятно, потому что контент, который вы ищете, отображается JavaScript После загрузки страницы в веб-браузере это означает, что веб-браузер загружает этот контент после запуска javascript, который вы не можете получить с помощью запроса request.get от python.

Я бы посоветовал изучить Selenium для очистки нужных вам данных

0 голосов
/ 21 июня 2020

Сначала меня немного смутила ваша ошибка, но после небольшой отладки я понял, что: eBay динамически генерирует эту ul с помощью JavaScript

Итак, поскольку вы не можете выполнить JavaScript с BeautifulSoup, вы должны использовать селен и дождаться, пока JavaScript загрузит этот ul

...