【发布时间】:2018-01-04 13:07:12
【问题描述】:
我想构建一个小工具来帮助家庭成员从网站上下载播客。
为了获得指向文件的链接,我首先需要将它们过滤掉(使用 bs4 + python3)。 这些文件在这个网站上(爱沙尼亚语):Download Page "Laadi alla" = "Download"
到目前为止,我的代码如下: (大部分来自stackoverflow上的示例)
from bs4 import BeautifulSoup
import urllib.request
import re
url = urllib.request.urlopen("http://vikerraadio.err.ee/listing/mystiline_venemaa#?page=1&pagesize=902&phrase=&from=&to=&path=mystiline_venemaa&showAll")
content = url.read()
soup = BeautifulSoup(content, "lxml")
links = [a['href'] for a in soup.find_all('a',href=re.compile('http.*\.mp3'))]
print ("Links:", links)
不幸的是,我总是只得到两个结果。 输出:
Links: ['http://heli.err.ee/helid/exp/ERR_raadiouudised.mp3', 'http://heli.err.ee/helid/exp/ERR_raadiouudised.mp3']
这些不是我想要的。 我最好的猜测是该页面的 html 和 bs4 有点损坏/解析器无法找到其他任何东西。 我尝试了不同的解析器,结果没有任何变化。 也许我也做错了什么。
例如,我的目标是将各个链接放在列表中。 我稍后会自己过滤掉所有重复/不需要的条目。
简单说明一下,以防万一:这是一个公共广播,所有内容都是合法托管的。
我的新代码是:
for link in soup.find_all('d2p1:DownloadUrl'):
print(link.text)
我很不确定标签是否被正确选择。
这个问题中列出的示例都没有真正起作用。有关工作代码,请参阅下面的答案。
【问题讨论】:
-
页面是使用 JavaScript 呈现的,请参阅我对stackoverflow.com/questions/45259232/… 的回答,了解如何抓取使用 JavaScript 呈现的网页
标签: python html json beautifulsoup