为什么无法使用lxml.html解析target.html中的所有div元素?

时间:2018-07-30 03:15:07

标签: python-3.x html-parsing lxml

请在保管箱中下载文件,并将其另存为/tmp/target.html

target.html

在带有firebug的firefox中打开它以查看html结构。

enter image description here

很明显,target.html中至少有10格。 现在,使用lxml.html解析target.html中的所有div元素。

python3
>>> import lxml.html
>>> doc=lxml.html.parse("/tmp/target.html")
>>> divs=doc.xpath("//div")
>>> len(divs)
4

获取结果4,为什么用上面的代码无法解析那么多div?
target.html中至少有10个div。 target.html中的解析表也是如此。
target.html中至少有9个表,请用firebug检查。

python3
>>> import lxml.html
>>> doc=lxml.html.parse("/tmp/target.html")
>>> tables=doc.xpath("//table")
>>> len(tables)
3

1 个答案:

答案 0 :(得分:1)

感谢sideshowbarker。

sudo pip3 install  html5lib

首先要使用pip安装html5lib。

import html5lib; 
doc = html5lib.parse(open('/tmp/target.html', 'rb'), treebuilder='lxml', namespaceHTMLElements=False); 
divs=doc.xpath('//div'); 
tables=doc.xpath('//table');
print(len(divs));
print(len(tables));