@SoulHunter033

Почему не работает find_all?

Всех приветствую! столкнулся с проблемой при парсинге. Мой код
def parse():
    url = 'kolesakz.html'
    page = open(url, encoding='utf-8')
    soup = BeautifulSoup(page.read(), 'html.parser')
    items = soup.find_all('div', class_ = 'result-block col-sm-8')
    comps = []

    for item in items:
        comps.append({
            'title': item.find_all('span', class_ = 'a-el-info-title').get_text(strip = True)
            })
        for comp in comps:
            print(comp['title'])

parse()`

Но выходит ошибка
Traceback (most recent call last):
  File "C:\Users\90536\Desktop\123\bot.py", line 19, in <module>
    parse()
  File "C:\Users\90536\Desktop\123\bot.py", line 14, in parse
    'title': item.find_all('span', class_ = 'a-el-info-title').get_text(strip = True)
  File "C:\Users\90536\AppData\Local\Programs\Python\Python39\lib\site-packages\bs4\element.py", line 2173, in __getattr__
    raise AttributeError(
AttributeError: ResultSet object has no attribute 'get_text'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?


При точно таком же коде но вместо item.find_all , написать item.find , то все работает , но код возвращает только один тайтл, а нужно чтобы все которые есть на странице. Буду благодарен за помощь
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
yupiter7575
@yupiter7575
Python программист
'title': item.find_all('span', class_ = 'a-el-info-title').get_text(strip = True)

find_all возвращает массив. У массива нет метода get_text
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
29 нояб. 2024, в 09:43
100000 руб./за проект
29 нояб. 2024, в 07:44
20000 руб./за проект