首页 > 解决方案 > Beautiful Soup,有条件地提取 Href

问题描述

从给定的网页选择中,我试图从表格中提取链接,条件是“文档类型”信息是特定的。例如,在这个网站上,如果文档类型是“技术援助报告”,我只想获取 Href。

在此处输入图像描述

当我使用谷歌检查它时,我看到了这个:

在此处输入图像描述

但是当我使用 BeautifulSoup 时,我可以找到 Href,但我找不到“技术援助报告”的文字。

import requests
url2 = "https://www.adb.org/projects/54128-001/main#project-documents"
response = requests.get(url2)
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text)
#print(soup.prettify())
parent = soup.find_all('tr')
parent[1].find_all('td')

我明白了:

[<td>
 <a href="/projects/documents/reg-54128-001-tar">Implementing the Cities Development Initiative for Asia: Technical Assistance Report</a> </td>,
 <td class="width-2-12 views-field views-field-field-date-content">
 <span class="date-display-single" content="2020-09-30T00:00:00+08:00" datatype="xsd:dateTime" property="">Sep 2020</span> </td>]

Href 在那里,日期在那里,但我找不到“技术援助报告”文本。中间的“td”没有出现。

此示例仅在网页上列出了一个文档,但其他示例可能有很多或没有。理想情况下,我希望能够遍历所有“tr”,并且仅在文档类型为“技术援助报告”或我正在寻找的其他内容时才获取 Href。我在这里做错了什么,有什么好方法可以做到这一点?

标签: pythonbeautifulsoup

解决方案


您可以从中获取站点地图并仅获取 tar 文件。

https://www.adb.org/sitemap.xml?page=1

在此处输入图像描述


推荐阅读