Я использую BeautifulSoup для получения информации о ценах на подержанные смартфоны Iphone7.После того, как я использую библиотеку bs4, чтобы получить соответствующий html, и использую BeautifulSoup, чтобы создать объект под названием «суп», я ищу информацию о каждом продукте, используя следующий код:
soup = BeautifulSoup(html,'html5lib')
products = soup.find_all('div', class_='feed-item sc-gqjmRU igneJk')
Это дает мне правильныйHTML информация о каждом продукте.Теперь я иду на один уровень глубже, чтобы увидеть описания для каждого продукта:
descriptions = [x.find('p', class_='sc-kAzzGY kZncUf') for x in products]
Код, приведенный выше, работает нормально.Однако это не то описание, которое я хочу.Это довольно грубая форма того, что я ищу.Чтобы получить только те описания, которые я упомянул, мне нужно написать что-то вроде этого (нужно добавить .getText ()):
descriptions = [x.find('p', class_='sc-kAzzGY kZncUf').getText() for x in products]
Это дает мне следующую ошибку:
----> 1 описание = [x.find ('p', класс _ = 'sc-kAzzGY kZncUf'). GetText () для x в продуктах]
AttributeError: объект 'NoneType' не имеет атрибута'getText'
Однако приведенный ниже код работает нормально:
descriptions = [x.find('p', class_='sc-kAzzGY kZncUf') for x in products]
descriptions[0].getText()
description [0] должно совпадать со значением x.find ('p',класс _ = 'sc-kAzzGY kZncUf'), который мы получаем из первой итерации.
Мой вопрос: Поскольку они должны давать одно и то же значение (как x.find, так и description [0]), почемуодин выдает ошибку, а другой работает?
Заранее спасибо