我需要捕获一个网站,并且正在寻找合适的库或程序来执行此操作。该网站使用Java Script并将更新推送到页面,我需要捕获这些以及页面本身。我使用curl捕获页面本身,但我不知道如何捕获更新。在给出选择的地方我会使用C ++。
此致
答案 0 :(得分:2)
如果您仍想使用c ++和curl尝试弄清楚页面中的javascript是什么 - 我假设它只是使用计时器发送AJAX请求并更新页面(尽管它可能更复杂)。 使用firefox和firebug这样的工具(“Net”间谍就是你想要的)来看看它是什么样的请求 - 你会得到:
运气好的话,你已经足够用curl模仿c ++中的行为了。如果您无法从收集的数据中做出任何事情,您将不得不浏览javascript并尝试弄清楚它在做什么(但大多数时候页面更新非常简单)。
这样做的简单方法是在浏览器中执行此操作,例如。作为一个firefox插件(用javascript编写) - 如果除了宠物项目之外的任何东西都需要它,这可能有点“不雅”,但它应该很容易做到:
答案 1 :(得分:2)
安装Firefox和GreaseMonkey。让GM脚本在适当的位置添加DOM事件以跟踪修改。然后,您可以使用XMLHttpRequest将信息发送到服务器,或使用XPCOM file IO opearation将它们写入本地文件。
有了这个,你可以在十几行中做你想做的事情,很少甚至没有逆向工程,而其他人建议(屏幕抓取)将需要数千行代码用于JavaScript重型站点IMO。
附录:这是/不是/ C ++的工作。无论如何,如果你用C ++进行,你最终会对JS进行逆向工程,所以你也可以在第一时间学习足够的JS来使用GreaseMonkey。
答案 2 :(得分:1)
看看SpiderMonkey。
我实际上并没有在愤怒中使用它,所以我不确定它是否会做你想要的。我遇到过它,可选地使用用Python编写的Scrapy网络爬行和屏幕抓取框架。
或者,您可以反向设计JavaScript推送更新的执行方式,并直接访问这些更新。听起来您需要存储这些更新和/或将它们应用到基本HTML页面。
答案 3 :(得分:1)
如果您正在寻找静态网页抓取BeautifulSoup(Python)是最好和最简单的之一。
如果你想要抓取一些javascript渲染的代码或其他东西,那么在页面渲染之前就无法完成,因此单独使用BeautifulSoup是不可能的。您将不得不使用像Crowbar - Similie这样的无头浏览器(使用XULRunner),它在无头浏览器上呈现javascript内容,并且此呈现内容的输出可以用作BeautifulSoup刮刀的输入。
答案 4 :(得分:0)
问题是您的网页正在更新,因为脚本代码正在页面上执行。使用curl不会让你那么做..
不确定您的确切需求..但您可以编写一个javascript注入器书签,为任何网页添加一个按钮,让您随时手动抓取DOM或body html ...这是多少个剪辑标记应用程序。
如果您需要能够在发生更新时自动捕捉更新内容 - 就像电影......那么您将需要更多参与的内容......