This是我想使用BeautifulSoup从以下站点(https://wwwn.cdc.gov/nchs/nhanes/search/datapage.aspx?Component=Examination)解析的源代码的图像。我希望提取<;span class='print-only'>;属性中的属性:htm链接。在
我的python代码如下所示:
import urllib.request
try:
from BeautifulSoup import BeautifulSoup
except ImportError:
from bs4 import BeautifulSoup
url = "https://wwwn.cdc.gov/nchs/nhanes/search/datapage.aspx?Component=Examination"
with urllib.request.urlopen(url) as page:
html_source = page.read()
soup = BeautifulSoup(html_source, 'html5lib')
link = soup.findAll("span", {"class":"print-only"})
打印“link”将返回空列表。我知道html代码中有span元素,因为芬德尔汤(“span”)返回html代码(尽管在这些span元素的内容中没有看到名为“print only”的类)。在
我注意到span属性在Firefox开发者窗口中变灰了。快速的google搜索显示,这意味着该属性是隐藏的。这是否意味着用我现在使用的方法不能得到它?
下面是一个使用BeautifulSoup获取所需内容的解决方案,首先让我们获取表:
现在我们在它的主体中找到了
^{pr2}$tr
标记:注意你要找的标签不在那里。我展示了列表的第一项,以便您更好地分析您需要的url在哪里,正如我们所看到的,它是我们想要的第一个
a
标记,因此例如:现在剩下要做的就是编写一个列表理解,将列表中每个
tr
标记中第一个a
标记的所有href
属性连接起来:如果我们打印
lst
的第一个元素,我们会看到这是我们想要的输出:由于span元素是隐藏的,您将无法使用BeautifulSoup检索它。也许,您可以使用其他属性来获取所需的链接。如果您知道要为其提取链接的.htm文件的名称,则只需使用内部文本找到“a”元素(它还绑定了所需的链接和隐藏的span元素),然后从元素中提取“href”,如下所示:
试试这个:
相关问题 更多 >
编程相关推荐