Отфильтровать ссылки, предоставленные Beautifulsoup - PullRequest
0 голосов
/ 13 июля 2020

Мне нужна была небольшая помощь относительно фильтрации определенных ссылок (каждая ссылка по сезону) из следующих результатов. Я стараюсь как можно чаще использовать этот код, чтобы избежать дальнейших проблем с применением нового кода, в котором я не уверен:

def get_playable_podcast0(soup0):
    subjects = []
    for content in soup0.find_all('item'):
        try:
            link = content.find('enclosure')
            link = link.get('url')
            print("\n\nLink: ", link)
            title = content.find('title')
            title = title.get_text()
        except AttributeError:
            continue
        item = {
                'url': link,
                'title': title,
                'thumbnail': "(imagelinkhere)",
        }
        subjects.append(item)
    return subjects
def compile_playable_podcast0(playable_podcast0):
    items = []
    for podcast in playable_podcast0:
        items.append({
            'label': podcast['title'],
            'thumbnail': podcast['thumbnail'],
            'path': podcast['url'],
            'is_playable': True,
    })
    return items

Я пытаюсь отфильтровать ссылку для каждого сезона и лучший способ сделать это, вероятно, использовать тег, который уже находится в ссылке .mp3, которую я схватил, ссылка для анализа и пример здесь:

<enclosure url="https://cbc.mc.tritondigital.com/..0916.mp3?ttag=season:5" length="34742214" type="audio/mpeg"/>

Короче говоря , как мне указать, чтобы он возвращал только ссылки с заранее указанным сезоном?

1 Ответ

1 голос
/ 13 июля 2020
def filter_season(season_id):
    urls = []
    for content in soup.find_all('item'):
        try:
            link = content.find('enclosure')
            link = link.get('url')
            if link.endswith("ttag=season:{}".format(season_id)):
                urls.append(link) 
        except AttributeError:
            continue
    return urls
...