我正在尝试从包含URL列表的网页获取URL。我不想得到所有的URL,只有那些文本与列表中字符串文本匹配的URL。字符串列表是网页上链接文本的子集,我通过抓取页面并删除我不想要的文本来提取。我有一个字符串列表存储在filenames
中
我正在尝试提取列表中包含字符串的链接。下面返回一个空列表
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html5lib')
links = soup.findAll('a', string = filenames[0])
file_links = [link['href'] for link in links if "export" in link['href']]
标记看起来像这样:
<p><a href="https://drive.google.com/uc?export=download&id=1wVjbdN9fztrjxhONGRX5U6N1OJDAChOi">
ECZ Mathematics Paper 2 2019.</a></p>
<p><a href="https://drive.google.com/uc?export=download&id=1x_9E3PaviCuSsqfJqOsQKOwVlCWZ1jqf">
ECZ Mathematics Paper 1 2019.</a></p>
<p><a href="https://drive.google.com/uc?export=download&id=1QFOzpPLuQPup8FtKgOoIcvzTnzCaRzUp">
ECZ Science Paper 3 2009.</a></p>
<p><a href="https://drive.google.com/uc?export=download&id=0B0lFc6TrfIg7aENYc1V6akRVVnc">
ECZ Civic Education Paper 2 2009.</a></p>
我想获得前三个的href链接,但不是最后一个,因为字符串'ECZ Civic Education Paper 2 2009.'
不在我的字符串列表中。网站链接为here
我的字符串列表如下所示:
filenames = ['ECZ Mathematics Paper 2 2019.', 'ECZ Mathematics Paper 2 2019.',
'ECZ Science Paper 3 2009.']
我只想要前三个链接,因为链接的文本在我的列表中(文件名)。我不想要第四个链接,因为href链接旁边的文本(ECZ Civil Education Paper 2 2009.)不在我的列表中,因为我不想下载此文件
您可以构造CSS选择器,然后一次性选择链接。例如(
html
是问题中的代码片段):印刷品:
如果请求已成功接收。然后使用bs解析它,并使用findAll查找链接“a”的标记。我认为没有必要在findAll中传递(string=filenames[0])
输出:
用这种方法试试看是否有效:
输出:
相关问题 更多 >
编程相关推荐