詳細瞭解如何導航through the parse tree in 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
解析樹。
-
內容是標籤的有序列表和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>
這會返回'u'\ n評論\ nText \ nsomething \ n這是我的文本\ n別的\ n''或'u'a commentTextsomethingThis是我的文本\'其他'\',其中有更多的文本比需要。 –
@CristianCiupitu:當然,你是對的,在這裏沒有注意。更新。 –
這是唯一的解決方案,它不依賴於文本與特定其他文本的順序或位置關係,而是從指定的標籤/元素中提取所有文本,同時忽略子標籤/元素的文本(或其他內容)。謝謝!這是尷尬的,但它的工作和解決我的問題(我不是OP,但有類似的需求)。 – geewiz