如何解释以下美丽的汤代码?

时间:2017-08-13 15:42:57

标签: beautifulsoup python-3.6

我是Beautiful Soup的新手并试图学习它,而我正在学习它,我被困在某个代码上。下面是代码:

for link in bsObj.findAll("a"):
    if 'href' in link.attrs:
        print(link.attrs['href'])

我无法理解" .attrs"如何使用它,它做了什么? 其次,当我执行此代码时,它会打印所有链接,但会省略href作为变量。到底是怎么回事?有人可以向我解释一下吗?

以下是完整的代码:

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://en.wikipedia.org/wiki/Kevin_Bacon")
bsObj = BeautifulSoup(html)
for link in bsObj.findAll("a"):
    if 'href' in link.attrs:
        print(link.attrs['href'])

1 个答案:

答案 0 :(得分:2)

从beautifulsoup4的文档中,“attrs”指的是具有html标记值的所有属性。对于“a”标签,它可能具有“href”属性,“类属性”等.attrs返回字典,因此您将通过访问键“href”获得该值。例如:当它打印以下链接时:

“/维基/百科:Protection_policy#半成品”

然后,字典[“href”] =“/ wiki /维基百科:Protection_policy#semi” 所以键“href”的值是“/ wiki / Wikipedia:Protection_policy#semi”

只需编写以下代码: 打印(link.attrs)然后关于这一切的一切都会清楚。