Python - Как получить текст внутреннего класса в BeautifulSoup (TripAdvisor) - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь узнать цену всех отелей в определенном районе в определенном диапазоне дат в TripAdvisor из программы Python Web Scrap. Моя программа загружает сайт с селеном, выбирает диапазон дат и при разборе данных на BeautifulSoup. Данные о ценах находятся внутри внутренних классов на сайте. Проверить элемент

Я использую этот код и выдаю мне объект ResultSet без ошибки атрибута.

html = browser.page_source
textobj = BeautifulSoup(html,"html.parser")
text1=textobj.find_all('div', attrs={'class': 'vr_listing'})
for item in text1:
     foo=item.find_all('div', attrs={'class' : 'price'})
     price=foo.text.strip()
     print(price)

Использование Python 3.7 Не могу понять, что делать.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Здесь:

 foo = item.find_all('div', attrs={'class' : 'price'})
 price = foo.text.strip()

find_all() возвращает resultSet (итерация по коллекции тегов), а не один тег.Если вы ожидаете иметь один единственный совпадающий тег в item, используйте вместо него item.find(...):

 foo = item.find('div', attrs={'class' : 'price'})
 price = foo.text.strip()

, иначе итерируйте по набору результатов:

 foos = item.find_all('div', attrs={'class' : 'price'})
 prices = [foo.text.strip() for foo in foos]
0 голосов
/ 10 сентября 2018

Было бы здорово, если бы вы предоставили ссылку, которую используете, чтобы мы могли воспроизвести проблему. Но вы можете попробовать эту строку кода:

html = browser.page_source
textobj = BeautifulSoup(html,"html.parser")
prices = textobj.findAll('div', {'class':'price'}).text

for price in prices:
    print(price)

'''
text1=textobj.find_all('div', attrs={'class': 'vr_listing'})
for item in text1:
     foo=item.find_all('div', attrs={'class' : 'price'})
     price=foo.text.strip()
     print(price)
'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...