【问题标题】:How to retrieve URLs under a certain property using BeautifulSoup in Python?如何在 Python 中使用 BeautifulSoup 检索某个属性下的 URL?
【发布时间】:2021-05-31 21:59:54
【问题描述】:

我正在尝试检索某个属性下的 url。我目前的代码是

import urllib
import lxml.html

url = 'https://play.acast.com/s/jeg-kan-ingenting-om-vin/33.hvorforercheninblancfraloireogsor-afrikaikkelengerpafolksradar-'
connection = urllib.urlopen(url)

dom =  lxml.html.fromstring(connection.read())
links = []

for link in dom.xpath('//meta/@content'): # select the url in href for all a tags(links)
    if 'mp3' in link:
        links.append(link)

output = set(links)

for i in output:
    print(i)

这会输出 2 个链接,这不是我想要的。

https://sphinx.acast.com/jeg-kan-ingenting-om-vin/33.hvorforercheninblancfraloireogsor-afrikaikkelengerpafolksradar-/media.mp3
https://sphinx.acast.com/jeg-kan-ingenting-om-vin/33.hvorforercheninblancfraloireogsor-afrikaikkelengerpafolksradar-r/media.mp3

我想做的是“仅”获取og:audio 属性下的 URL 链接。不是og:audio:secure_url 属性。

我该如何做到这一点?

【问题讨论】:

    标签: python python-3.x beautifulsoup


    【解决方案1】:

    要只选择property="og:audio" 而不是property="og:audio:secure_url" 的标签,您可以使用[attribute=value] CSS 选择器。在您的情况下,它将是:[property="og:audio"]

    既然你标记了,你可以这样做:

    soup = BeautifulSoup(connection.read(), "html.parser")
    
    for tag in soup.select('[property="og:audio"]'):
        print(tag["content"])
    

    输出:

    https://sphinx.acast.com/jeg-kan-ingenting-om-vin/33.hvorforercheninblancfraloireogsor-afrikaikkelengerpafolksradar-/media.mp3
    

    【讨论】:

      【解决方案2】:

      检查页面时,更好的方法是研究“网络”选项卡中的 XHR 调用。在https://feeder.acast.com/api/v1/shows/jeg-kan-ingenting-om-vin/episodes/33.hvorforercheninblancfraloireogsor-afrikaikkelengerpafolksradar-?showInfo=true 的响应中,url 键就是您要查找的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 2020-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多