2010-12-28 5 views
2
<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> 
나는 단지 하나의 js에 의해 생성하지 않습니다 얻을

자바 스크립트를 인식하는 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> 

나는 위의 HTML 페이지에있는 모든 lable가 객체를 잡기 위해 XPath를 사용합니다 ... ~ 파이어 폭스 XPath 검사기는 모든 lable을 찾을 수 있습니다!?

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> 
+3

제거 욕설로 .. 그것은하지만, 까다로운 일이 될 것입니다 얼마나 모르겠어요 .. –

+1

당신은 구문 분석하고 HTML을 구문 분석하기 전에 JS를 해석해야합니다. http://www.crummy.com/software/BeautifulSoup/을 보셨습니까? –

+0

귀하의 자바 스크립트는 주어진대로 말이되지 않습니다 - 문서의 머리 부분에 링크를 쓰고 있습니까? lxml의 관점에서, document.write의 모든 것은 파싱되지 않는 문자열 상수입니다. –

답변

1

하지 파이썬에서 자바 스크립트를 인식 파서에 대한 단서하지만 당신은 일을 할 ANTLR를 사용할 수 있습니다. 아이디어는 내 것이 아니므로 link을 남겨두고 있습니다.

당신이 선택적으로 명령 구문 분석 (및 실행)에 필요한 사항을 선택하는 파서를 최적화 할 수 있기 때문에이 사실은 꽤 멋지다. "독립 실행 자바 스크립트"내가 jslibs 발견에 대한 구글 검색

+0

니스! 그리고 당신은 연결 같은 질문에서 http://pypi.python.org/pypi/python-spidermonkey/ 가치가 고려 될 것으로 보인다뿐만 아니라 ... – redShadow

0

자바에는 Cobra이 있습니다. 파이썬 용 자바 인식 HTML 파서를 모른다.

0

: "도마뱀 붙이의 자바 스크립트 엔진입니다 SpiderMonkey 라이브러리"를 기반으로하는 "범용 스크립트 언어로 자바 스크립트를 사용하는 독립형 자바 스크립트 개발 런타임 환경".

큰 소리! 아직 테스트하지는 않았지만 페이지에서 찾은 자바 스크립트 코드를 실행할 수있는 것처럼 보입니다. 나는 아무 것도 제공되지

+0

그렇진 ... 그냥 언어 바인딩,하지만이 없습니다 DOM API 대부분의 실제 자바 스크립트는 여전히 작동하지 않습니다. 필요한 부분을 모두 추가 할 때까지는 브라우저가 있습니다. 또는 내가 아는 가장 가까운 것은 [HtmlUnit] (http://htmlunit.sourceforge.net/)입니다. – Keith