我读了一本书,上面写着:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen('http://www.pythonscraping.com/pages/page3.html')
bs = BeautifulSoup(html, 'html.parser')
for child in bs.find('table',{'id':'giftList'}).children:
print(child)
这段代码打印giftList表中的产品行列表,包括列标签的初始行。如果您使用descendants()函数而不是children()函数来编写它,那么将在表中找到并打印大约24个标记,包括img标记、span标记和单个td标记。
我测试了它,当使用。children或。descendants时,我没有看到两个输出有差异。有谁能告诉我,当使用。children和。descendants时,究竟会打印什么?
区别在于深度层次。children
将到达一个深度最大值。descendants
将打印所有内容,每次都输出到最大深度。
如果我们从beautifulsoup文档的sisters.html
中摘录
<p class="title"><b>The Dormouse's story</b></p>
for child in p.children:
print(child)
>>> <b>
for child in p.descendants:
print(child)
>>> <b>
>>> "The Dormouse's story"