Разбор только первого результата с красивым супом - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующий код, который успешно извлекает ссылки, заголовки и т. Д. Для эпизодов подкастов.Как бы я просто потянул за первый, то есть последний эпизод, а затем сразу же остановился и дал именно этот результат?Любой совет будет принята с благодарностью.

def get_playable_podcast(soup):
"""
@param: parsed html page            
"""
subjects = []

for content in soup.find_all('item'):

    try:        
        link = content.find('enclosure')
        link = link.get('url')
        print "\n\nLink: ", link

        title = content.find('title')
        title = title.get_text()

        desc = content.find('itunes:subtitle')
        desc = desc.get_text()

        thumbnail = content.find('itunes:image')
        thumbnail = thumbnail.get('href')

    except AttributeError:
        continue

    item = {
            'url': link,
            'title': title,
            'desc': desc,
            'thumbnail': thumbnail
    }

    subjects.append(item) 

return subjects

def compile_playable_podcast(playable_podcast):
"""
@para: list containing dict of key/values pairs for playable podcasts
"""
items = []

for podcast in playable_podcast:
    items.append({
        'label': podcast['title'],
        'thumbnail': podcast['thumbnail'],
        'path': podcast['url'],
        'info': podcast['desc'],
        'is_playable': True,
})

return items

1 Ответ

0 голосов
/ 07 июля 2019

Ответ @Джона Гордона совершенно правильный.
@Джон Гордон отметил, что:

soup.find()

всегда будет отображать первый найденный предмет (для вас это прекрасно, когда вы хотите очистить "последний эпизод").Однако представьте, что вы просто хотите выбрать второй, третий, четвертый и т. Д. Элемент вашей BeautifulSoup.Затем вы можете сделать это с помощью следующей строки кода:

soup.find()[0] # This will works the same way as soup.find() and displays the first item

Когда вы заменяете 0 на любое другое число (например, 4), вы получаете только выбранный (в этом примере четвертый) элемент;).

...