使用xpath捕获python中的标记之间的状态

时间:2015-05-04 11:49:30

标签: python xpath lxml lxml.html

我希望以下列格式捕获 WORD 一词 This is what I want.

<div id="message1">
<div class="message2">
<strong>WORD</strong> This is what I want.<br/>
</div>              
</div>

我尝试的是:

import requests
from lxml import html
cont=session.get('http://mywebsite.com').content
tree=html.fromstring(cont)
word=tree.xpath('//div[@class="message2"]/strong')
sentence=tree.xpath('//div[@class="message2"]/br')
print word
print sentence

我没有打印任何内容!

3 个答案:

答案 0 :(得分:2)

我发现xpath helper非常适合解决像这样的问题

word = tree.xpath('//div[@class="message2"]/strong/text()')[0]
sentence = tree.xpath('//div[@class="message2"]/strong/following-sibling::text()[1]')[0]

答案 1 :(得分:2)

这就是你想要的:)

from lxml import html

text = """ 
<div id="message1">
<div class="message2">
<strong>WORD</strong> This is what I want.<br/>
</div>              
</div>
"""

tree = html.fromstring(text);
print(tree.xpath("//div[@class='message2']/strong/following-sibling::text()")[0])

答案 2 :(得分:0)

我不确定LXML的具体内容,但如果这是您要查找的文本,则调用文本将不会返回强标记内存在的子树文本。

因此,在一般的XPath术语中,这就是您要寻找的仅匹配该文本的内容。

//*[@class="message2"]/text()