Не выводится результат парсинга python
import requests
from bs4 import BeautifulSoup
def parse():
URL = 'https://kwork.ru/projects'
HEADERS = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0', 'accept': '*/*'
}
responce = requests.get(URL, headers = HEADERS)
soup = BeautifulSoup(responce.content, 'html.parser')
items = soup.findAll('div', class_='card want-card js-card-1234560 js-want-container')
comps = []
for item in items:
comps.append({
'title' : item.find('a', class_='wants-card__header-title first-letter breakwords pr250').get_text(strip = True)
})
for comp in comps:
print(comp['title'])
parse()
Ответы (1 шт):
Автор решения: Eoan Ermine
→ Ссылка
js-card-1234560 - это уникально сгенерированный класс, который не должен присутствовать в вашем коде. Уберите его и воспользуйтесь списком для перечисления нескольких классов:
items = soup.findAll('div', class_=['card', 'want-card', 'js-want-container'])
Далее заметьте, что на самом деле ссылка, которую вы хотите найти, не обладает классами, которые вы указываете. Ими обладает контейнер div, содержащий ссылку:
<div class="wants-card__header-title first-letter breakwords pr250">
<a href="...">Название</a>
</div>
Измените код в соответствие с этим фактом:
for item in items:
comps.append({
'title' : item.find('div', class_=['wants-card__header-title', 'first-letter', 'breakwords', 'pr250']).find('a').get_text(strip = True)
})
И теперь он полностью рабочий.