Skip to main content
 首页 » 编程设计

用于 Python 的 javascript 感知 html 解析器 ~

2025年05月04日53zlslch

<html> 
<head> 
    <script type="text/javascript"> 
    document.write('<a href="http://www.google.com">f*** js</a>'); 
    document.write("f*** js!"); 
    </script> 
</head> 
<body> 
    <script type="text/javascript"> 
    document.write('<a href="http://www.google.com">f*** js</a>'); 
    document.write("f*** js!"); 
    </script> 
<div><a href="http://www.google.com">f*** js</a></div> 
</body> 
</html> 

我想使用 xpath 来捕获上面 html 页面中的所有标签对象...

In [1]: import lxml.html as H 
 
In [2]: f = open("test.html","r") 
 
In [3]: c = f.read() 
 
In [4]: doc = H.document_fromstring(c) 
 
In [5]: doc.xpath('//a') 
Out[5]: [<Element a at a01d17c>] 
 
In [6]: a = doc.xpath('//a')[0] 
 
In [7]: a.getparent() 
Out[7]: <Element div at a01d41c> 

我只得到一个不是js生成的~ 但是 firefox xpath 检查器可以找到所有标签!?

http://i.stack.imgur.com/0hSug.png

怎么做到的???谢谢~!

<html> 
<head> 
</head> 
<body> 
<script language="javascript"> 
function over(){ 
a.innerHTML="mouse me" 
} 
function out(){ 
a.innerHTML="<a href='http://www.google.com'>google</a>" 
} 
</script> 
<body><li id="a"onmouseover="over()" onmouseout="out()">mouse me</li> 
</body> 
</html> 

请您参考如下方法:

没有关于 python 中支持 javascript 的解析器的线索,但你可以使用 ANTLR做这项工作。这个想法不是我的,所以我要离开你 link .

这实际上很酷,因为您可以优化解析器以有选择地选择需要解析(和执行)的指令。