Не выводится результат парсинга 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)
    })

И теперь он полностью рабочий.

→ Ссылка