Ошибка AttributeError при создании Парсера на Python
Получаю одну ошибку:
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()?.
Как её починить?
КОД:
from bs4 import BeautifulSoup as BS
import requests
def parser():
URL = 'https://kwork.ru/projects?c=all'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 OPR/80.0.4170.61 (Edition Yx GX)',
'Accept': '*/*'
}
r = requests.get(URL, headers=HEADERS)
soup = BS(r.content, 'html.parser')
items = soup.find_all('div', {'class':'card want-card js-card-1431289 js-want-container'})
projects = []
title = items.find('div', {'class':'wants-card__header-title first-letter breakwords pr250'})
projects.append(title)
print(projects)
parser()
Ответы (2 шт):
Автор решения: Сергей Шашко
→ Ссылка
Вложенность по тегам неверная: сначало парсим
'div' 'class':'wants-card__header-title first-letter breakwords pr250'
а потом только
'div', 'class':'card want-card js-card-1431289 js-want-container'
from bs4 import BeautifulSoup as BS
import requests
URL = 'https://kwork.ru/projects?c=all'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 OPR/80.0.4170.61 (Edition Yx GX)',
'Accept': '*/*'
}
r = requests.get(URL, headers=HEADERS)
soup = BS(r.content, 'html.parser')
items = soup.find_all('div', class_="wants-card__header-title first-letter breakwords pr250")
for i in items:
url = i.find('a').get('href')
text = i.text
print(url, text)
Автор решения: Точка Слэш
→ Ссылка
Метод find_all возвращает список найденных тегов, а не объект класса BeautifulSoap. У списка нет метода find, по этому выходит ошибка.