详细了解如何在BeautifulSoup
. 解析树得到tags
和NavigableStrings
(因为这是一个文本)。一个例子
from BeautifulSoup import BeautifulSoup
doc = ['<html><head><title>Page title</title></head>',
'<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
'<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
'</html>']
soup = BeautifulSoup(''.join(doc))
print soup.prettify()
# <html>
# <head>
# <title>
# Page title
# </title>
# </head>
# <body>
# <p id="firstpara" align="center">
# This is paragraph
# <b>
# one
# </b>
# .
# </p>
# <p id="secondpara" align="blah">
# This is paragraph
# <b>
# two
# </b>
# .
# </p>
# </body>
# </html>
要向下移动您拥有的解析树contents
和string
.
contents 是页面元素中包含的 Tag 和 NavigableString 对象的有序列表
如果标签只有一个子节点,并且该子节点是一个字符串,则该子节点作为 tag.string 以及 tag.contents[0] 可用
对于以上,也就是说你可以得到
soup.b.string
# u'one'
soup.b.contents[0]
# u'one'
对于几个子节点,您可以拥有例如
pTag = soup.p
pTag.contents
# [u'This is paragraph ', <b>one</b>, u'.']
所以在这里你可以玩contents
并在你想要的索引处获取内容。
你也可以迭代一个标签,这是一个快捷方式。例如,
for i in soup.body:
print i
# <p id="firstpara" align="center">This is paragraph <b>one</b>.</p>
# <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>