下面是我得到的一些格式错误的HTML的表示
<body><article >
<p><div ><img src="xyz"><noscript><img src="xyz" /></noscript><p class="caption">ABC</p></div>EFG. </p>
<p>HIJ.</p>
<p>KLM</p>
<p>NOP</p>
</article></body>
如何检索第一个&#39; p&#39;标签即整个
<div ><img src="xyz"><noscript><img src="xyz" /></noscript><p class="caption">ABC</p></div>EFG.
我试过了
output = tree.xpath("//article/p")
当我尝试遍历子节点(len(output [0]))时,它给我一个0的计数,这意味着它没有子节点。
当我这样做时
print output[0].text
我没有。如果我做
lxml.etree.tostring(output[0])
我得到了
</p>
答案 0 :(得分:0)
试试这个XPath:
/body/article/p[1]
但是这并没有解决格式错误的问题。
答案 1 :(得分:0)
尝试使用soupparser
,它应解析损坏的html。
from lxml.html import soupparser
with open(path, 'r') as f:
tree = soupparser.parse(f)
output = tree.findall('//article/p')
print(output[0].xpath('.//text()'))
答案 2 :(得分:0)
试试这个,你可以获得第一个p标签的所有内容。这个答案可以参考上一个答案。
from lxml.html import soupparser, tostring
with open(your_file_path, 'rb') as f:
tree = soupparser.parse(f)
output = tree.findall('//article/p')
print(tostring(output[0]).decode('utf-8'))