Расчесывание вывода текста с BeautifulSoup - PullRequest
1 голос
/ 05 октября 2019

У меня проблема с анализом ссылки из файла, потому что это не полная ссылка, текст для анализа:

<enclosure url="/itunes/463/RKBU-How-the-Seas-Shaped-Humanit-02019_09_24_13_40_18-0.mp3" length="83586948" type="audio/mpeg"/>

Ссылка должна быть:

https://www.opednews.com/itunes/463/RKBU-How-the-Seas-Shaped-Humanit-02019_09_24_13_40_18-0.mp3

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

def get_playable_podcast1(soup1):
    subjects = []
    for content in soup1.find_all('item', limit=9):
        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': "https://upload.wikimedia.org/wikipedia/en/thumb/2/21/OpEdNews_%28logo%29.jpg/200px-OpEdNews_%28logo%29.jpg",
        }
        subjects.append(item)
    return subjects

1 Ответ

0 голосов
/ 05 октября 2019

Вы можете использовать BeautifulSoup с urllib.parse.urljoin:

import urllib.parse
from bs4 import BeautifulSoup as soup
url, html = 'https://www.opednews.com', '<enclosure url="/itunes/463/RKBU-How-the-Seas-Shaped-Humanit-02019_09_24_13_40_18-0.mp3" length="83586948" type="audio/mpeg"/>'
result = urllib.parse.urljoin(url, soup(html, 'html.parser').enclosure['url'])

Выход:

'https://www.opednews.com/itunes/463/RKBU-How-the-Seas-Shaped-Humanit-02019_09_24_13_40_18-0.mp3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...