python - 如何在包含 html 元素的列表中获取链接?
问题描述
我有这样的代码
import bs4
import requests
page = requests.get('https://nicmusic.net/category/%D8%A2%D9%87%D9%86%DA%AF-
%D9%87%D8%A7%DB%8C-%D8%A7%D8%AD%D8%B3%D8%A7%D9%86-
%D8%AE%D9%88%D8%A7%D8%AC%D9%87-%D8%A7%D9%85%DB%8C%D8%B1%DB%8C/')
soup = bs4.BeautifulSoup(page.content, 'html.parser')
button = soup.findAll('a', 'more')
button_link = ([x['href'] for x in button])
the_list = ([bs4.BeautifulSoup(requests.get(z).content,'html.parser').findAll("div", {"class": "dlbox"}) for z in button_link])
print(the_list)
输出是这样的
[[<div class="dlbox">
<a href="http://dl.nicmusic.net/nicmusic/021/030/Ehsan%20Khajeh%20Amiri%20-%20Bayad%20Bargasht.mp3" rel="external nofollow" target="_blank" title="دانلود">دانلود آهنگ - ( کیفیت عالی 320 )</a>
<a href="http://dl.nicmusic.net/nicmusic/021/030/Ehsan%20Khajeh%20Amiri%20-%20Bayad%20Bargasht%20-%20128.mp3" rel="external nofollow" target="_blank" title="دانلود">دانلود آهنگ - ( کیفیت خوب 128 )</a>
<p> </p>
<audio controls="controls" preload="none">
<source src="http://dl.nicmusic.net/nicmusic/021/030/Ehsan%20Khajeh%20Amiri%20-%20Bayad%20Bargasht%20-%20128.mp3" type="audio/mpeg"/>
</audio>
</div>],
[<div class="dlbox">
<a href="http://dl.nicmusic.net/nicmusic/020/088/10%20Sahneh.mp3" rel="external nofollow" target="_blank" title="دانلود">دانلود آهنگ - ( کیفیت عالی 320 )</a>
<a href="http://dl.nicmusic.net/nicmusic/020/088/10%20Sahneh%20128.mp3" rel="external nofollow" target="_blank" title="دانلود">دانلود آهنگ - ( کیفیت خوب 128 )</a>
<p> </p>
<audio controls="controls" preload="none">
<source src="http://dl.nicmusic.net/nicmusic/020/088/10%20Sahneh%20128.mp3" type="audio/mpeg"/>
</audio>
问题是,我怎样才能得到这个列表中每个元素的第一个链接?
解决方案
您似乎正在寻找地址中的第一个“.mp3”链接。我使用波纹管链接在特定链接中查找所有“.txt”文件:
import requests
from bs4 import BeautifulSoup
archive_url="https://github.com/PedramNavid/trump_speeches/blob/master/data/"
def get_Text_links():
# create response object
r = requests.get(archive_url)
# create beautiful-soup object
soup = BeautifulSoup(r.content,'html5lib')
# find all links on web-page
links = soup.findAll('a')
# filter the link sending with .mp4
Text_links = [archive_url + link['href'] for link in links if link['href'].endswith('txt')]
return Text_links
get_Text_links()
推荐阅读
- javascript - 如何正确使用jquery append
- python-3.x - 创建一个仅从数字列表中返回回文的列表
- scrapy - 如何使用scrapy模拟下拉选择和更新表加载?
- swift - 自定义 UISlider 高度 - 以编程方式创建
- python - 为什么我不能从当前目录中的另一个 py 文件导入函数?
- python - 无法在 Pandas 中保存值
- hadoop - 将目录从一个 Hadoop 集群递归复制到另一个
- amazon-web-services - AWS Lambda:是否始终以 MB 为单位使用最大内存?
- git - 无法为漂亮的图形创建全局 git 别名
- c++ - 如何在 Windows 上编译 Libsmscout 库?