2010-05-14 4 views
0

일부 html 페이지가 있습니다. 일부 콘텐츠를 생성하는 자바 스크립트가 있습니다. 파이썬 스크립트에서이 내용을 파싱해야합니다. 컴퓨터에 파일 복사본을 저장했습니다. '이미 생성 된'html로 작업 할 수있는 방법이 있습니까? 마찬가지로 페이지 파일을 연 후에 브라우저에서 볼 수 있습니다. 내가 이해하는 한, 나는 DOM (어쩌면 xml2dom lib)으로 작업해야한다.javascript에서 생성 된 html로 작업

답변

2

Javascript가 변경되기 전후에 "파일"(웹 페이지, 상상)을 저장 했습니까?

"after"이면 더 이상 HTML을 자바로 처리하지 않아도됩니다. lxml 또는 BeautifulSoup과 같은 인기있는 파서를 사용하여 HTML을 처리 할 수 ​​있습니다.

"before"이면 Javascript가 실제 브라우저를 자동화하여 작업을 수행하도록해야합니다. 그 작업을 위해 나는 SeleniumRC을 권하고 싶습니다 - 그러면 "after"케이스로 돌아갑니다 ;-).

+0

+1 내가 생각했던 것보다 더 나은 질문이 있다고 생각합니다. 어쨌든 누군가가 필요로 할 때를 대비해서 제 대답을 남겨두고 있습니다. –

+0

예, '전에'. 하지만 제 스크립트는 거의 매분마다 자동으로 작동합니다. SeleniumRC로 이것을 구현할 수 있습니까? – Ockonal

+0

@Ockonal, RAM이 많은 강력한 컴퓨터가있는 경우 확실합니다. 가장 최신의 가장 빠른 브라우저에서 Javascript가 매우 빠르게 실행되고 Selenium이 오버 헤드를 거의 추가하지 않습니다. –

0

JavaScript가 콘텐츠를 생성 할 때 (클라이언트 측에서) 문서의 서버 측 처리가 이미 수행 된 시점에서 어디에서 실행되는지에 대한 근본적인 오해가있을 수 있습니다. 서버 측 Python 스크립트가 JavaScript로 만든 HTML에 액세스하는 직접적인 방법은 없습니다. 기본적으로 HTML은 브라우저의 DOM에 "가상으로"존재합니다.

해당 HTML을 Python 스크립트로 전송하는 방법을 찾아야합니다. 대부분 Ajax를 사용합니다. 당신은 HTML을하고 Ajax 호출에 매개 변수로 추가합니다 (당신이 크기 제한 문제를하지 않도록 요청 방법으로 POST을 사용해야합니다.)

예를 jQuery's AJAX functions를 사용하여 :

$.ajax({ 
    url: "myscript.py", 
    type: "POST", 
    data: { html: your_html_content_here }, 
    success: function(){ 
    alert("sent HTML to python script!"); 
    }}); 
관련 문제