Ошибка с парсером на python
Пишу простой парсер новостей на python.
import requests
from bs4 import BeautifulSoup
url="https://tproger.ru/news/"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
post_title = soup.findAll('div', class_="post-title")
post_entry = soup.findAll('div', class_="entry-content")
try:
while True:
title = post_title.find("h2", class_="entry-title").get_text(strip=True)
entry = post_entry.find("p").get_text(strip=True)
except:
print("Конец:)")
Компилятор выдает ошибку
AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
Может быть для вас тут все просто, но я только начинаю. Не ругайтесь:)
Ответы (1 шт):
soup.findAll возвращает объекты типа List, которые содержат n элементов типа bs4.element.Tag. post_title и post_entry это списки, а title с entry являются ссылками на эти списки. У списков нет метода .find, они есть у объекта bs4.element.Tag. Соответственно тебе надо проитерироваться по полученному списку, чтобы получить доступ к тегу, у которого есть метод find. Исключение как раз об этом и говорит. Если хочешь можем созвонится и разобрать вместе.
Бесконечный цикл кстати здесь совершенно зря, ты из него не выйдешь