Javascript 如何以编程方式捕获带有强制更新的网页

Javascript 如何以编程方式捕获带有强制更新的网页,javascript,c++,html,Javascript,C++,Html,我需要捕获一个网站,并寻找一个合适的库或程序来做到这一点。该网站使用Java脚本并将更新推送到页面,我需要捕获这些更新以及页面本身。我使用curl来捕获页面本身,但我不知道如何捕获更新。如果有选择,我会使用C++。 问候看一看 我实际上并没有在愤怒中使用它,所以我不确定它是否能满足你的需求。我遇到过它,它可以与用Python编写的web爬行和屏幕抓取框架一起随意使用 或者,您可以对JavaScript推送更新的执行方式进行反向工程,并直接访问这些更新。听起来您需要存储这些更新和/或将它们应用于基

我需要捕获一个网站,并寻找一个合适的库或程序来做到这一点。该网站使用Java脚本并将更新推送到页面,我需要捕获这些更新以及页面本身。我使用curl来捕获页面本身,但我不知道如何捕获更新。如果有选择,我会使用C++。 问候

看一看

我实际上并没有在愤怒中使用它,所以我不确定它是否能满足你的需求。我遇到过它,它可以与用Python编写的web爬行和屏幕抓取框架一起随意使用


或者,您可以对JavaScript推送更新的执行方式进行反向工程,并直接访问这些更新。听起来您需要存储这些更新和/或将它们应用于基本HTML页面。

问题是您的网页正在更新,因为脚本代码正在页面上执行。使用curl不会让你达到目的

不确定你的确切需求。。但是您可以编写一个javascript injector bookmarklet,它可以在任何网页上添加一个按钮,并允许您随时手动获取DOM或正文html。。。这是许多剪辑标记应用程序的工作方式


如果您需要在更新发生时自动捕获更新的内容,如电影。。如果你还想使用C++和卷曲来找出页面中的JavaScript,我想它只是使用计时器发送Ajax请求并更新页面(虽然它可能更复杂)。 使用firefox和firebug之类的工具(你想要的是“网络”间谍)查看它是什么类型的请求-你会得到:

  • 请求的url
  • 参数
  • 返回的内容(可以是html、文本、xml或json)
如果运气好,你就可以用CURL模拟C++中的行为了。如果您无法从收集的数据中获得任何信息,那么您必须浏览javascript并尝试了解它在做什么(但大多数情况下页面更新非常简单)

要做到这一点,最简单的方法是在浏览器中进行,例如作为firefox插件(用javascript编写)-如果这是宠物项目以外的任何项目所需要的,这可能有点“不合法”,但这应该很容易做到:

  • 监视DOM树的更新(HTMLDOM级别2有各种“变异”事件,但我从未使用过它们,因此我对它们不太了解,也不知道它们是否“工作”//受支持-请参阅)。甚至有一种可能性,这种东西可以工作,这意味着你不必制作一个完整的firefox插件-例如,应该开始(你不想跟踪“加载”,而是类似“DOMSubtreeModified”)。如果变异事件不起作用,您可以随时使用计时器比较html内容
  • 或者像firebug那样监视网络请求并处理结果
安装Firefox和。让GM脚本在适当的地方添加DOM事件以跟踪修改。然后可以使用XMLHttpRequest将信息发送到服务器,或者使用XPCOM将信息写入本地文件

有了它,你可以在十几行代码中完成你想做的事情,几乎不需要反向工程,而其他人建议的(屏幕抓取)将需要数千行代码来完成一个使用大量JavaScript的站点


<附录:这是/不是/是C++的一个工作。无论如何,如果你用C++来做,你最终会逆向工程JS,所以你最好还是先学习足够的JS来使用GRASEMONKEY。

< P>如果你正在寻找静态网页抓取(Python)是最好的和最简单的。 如果您希望刮取一些javascript呈现的代码或其他东西,则在呈现页面之前无法完成,因此仅使用BeautifulSoup是不可能的。您必须使用无头浏览器,如(使用XULRunner),它在无头浏览器上呈现javascript内容,并且该呈现内容的输出可以用作BeautifulSoup scraper的输入