2017-07-25 114 views
4
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" class="pc chrome win psc_dir-ltr psc_form-xlarge" dir="ltr" lang="en"> 
<title>Some Title</title> 
</html> 

如果我運行:LXML XPath返回一個空列表

from lxml import etree 
html = etree.parse('text.txt') 
result = html.xpath('//title') 
print(result) 

我會得到一個空列表。 我想它與名稱空間有關,但我無法弄清楚如何解決它。

+1

您是使用xml還是html樹狀構建器? http://lxml.de/parsing.html –

+0

我更新了我的代碼。 –

回答

1

嘗試使用html解析器創建樹。 另請注意,如果text.txt是一個文件,它需要先閱讀。

with open('text.txt', 'r', encoding='utf8') as f: 
    text_html = f.read() 

這樣的:

from lxml import etree, html 

def build_lxml_tree(_html): 
    tree = html.fromstring(_html) 
    tree = etree.ElementTree(tree) 
    return tree 

tree = build_lxml_tree(text_html) 
result = tree.xpath('//title') 
print(result) 
1

您還可以使用HTML解析器:

from lxml import etree 
parser = etree.HTMLParser() 
html = etree.parse('text.txt',parser) 
result = html.xpath('//title') 
print(result) 
1

你可以這樣做:

from lxml import etree 
parser = etree.HTMLParser() 
html = etree.parse('text.txt',parser) 
result = html.xpath('//title/text()') 
print(result) 

輸出是:

['Some Title']