【发布时间】:2010-05-15 02:52:53
【问题描述】:
我有一些 html 页面。有一个 javascript 可以生成一些内容。我必须从 python-script 解析这些内容。我已将文件副本保存在计算机上。有什么方法可以处理“已经生成”的 html?就像我在打开页面文件后在浏览器中看到的那样。据我了解,我必须使用 DOM(也许是 xml2dom lib)。
【问题讨论】:
我有一些 html 页面。有一个 javascript 可以生成一些内容。我必须从 python-script 解析这些内容。我已将文件副本保存在计算机上。有什么方法可以处理“已经生成”的 html?就像我在打开页面文件后在浏览器中看到的那样。据我了解,我必须使用 DOM(也许是 xml2dom lib)。
【问题讨论】:
您是否在 Javascript 更改文件之前或之后保存了“文件”(我想是网页)?
如果是“之后”,那么某些 HTML 是通过 Javascript 完成的就不再重要了——您可以使用流行的解析器,例如 lxml 或 BeautifulSoup 来处理您拥有的 HTML。
如果是“之前”,那么首先你需要让 Javascript 通过自动化一个真正的浏览器来完成它的工作;对于该任务,我会推荐SeleniumRC——这会让你回到“之后”的情况;-)。
【讨论】:
我认为您可能对运行在哪里有一个基本的误解:在 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!");
}});
【讨论】: