【问题标题】:Working with html generated from javascript使用从 javascript 生成的 html
【发布时间】:2010-05-15 02:52:53
【问题描述】:

我有一些 html 页面。有一个 javascript 可以生成一些内容。我必须从 python-script 解析这些内容。我已将文件副本保存在计算机上。有什么方法可以处理“已经生成”的 html?就像我在打开页面文件后在浏览器中看到的那样。据我了解,我必须使用 DOM(也许是 xml2dom lib)。

【问题讨论】:

    标签: python html dom


    【解决方案1】:

    您是否在 Javascript 更改文件之前或之后保存了“文件”(我想是网页)?

    如果是“之后”,那么某些 HTML 是通过 Javascript 完成的就不再重要了——您可以使用流行的解析器,例如 lxmlBeautifulSoup 来处理您拥有的 HTML。

    如果是“之前”,那么首先你需要让 Javascript 通过自动化一个真正的浏览器来完成它的工作;对于该任务,我会推荐SeleniumRC——这会让你回到“之后”的情况;-)。

    【讨论】:

    • +1 我认为您的问题比我做得更好。无论如何我都会留下我的答案,以防有人需要它。
    • 是的,“之前”。但是我的脚本应该几乎每分钟都会自动运行。我可以用 SeleniumRC 实现吗?
    • @Ockonal,如果你有足够强大的机器和大量内存,那么当然:使用当今最新、最快的浏览器,Javascript 运行速度非常快,而 Selenium 几乎不会增加开销。
    【解决方案2】:

    我认为您可能对运行在哪里有一个基本的误解:在 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!");
      }});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多