2011-11-30 25 views
1

我想制作一个抓取网站的脚本,它应该返回该页面上显示的所有横幅的位置。制作感知JavaScript的抓取工具

横幅的位置大部分时间来自已知域。但横幅不在HTML中作为简单的图像或swf文件。大部分时间都是用Javascript来显示横幅。

因此,如果.swf文件或图像文件从横幅域加载,它应该返回该网址。

这可能吗?我怎么能做到这一点?

如果它也可以返回该广告的登录页面,那么最好。如何解决这个问题?

+0

你很可能会在http://stackoverflow.com/questions/5555930/is-there-any-java-script-web-crawler-framework找到更好的答案,因为PHP不会评估JavaScript。 – Gordon

+0

你说得对,JavaScript框架是必要的。但是如何过滤掉显示的横幅? – KlaasVaak

回答

2

您可以使用selenium在真实浏览器中打开页面,然后访问DOM。 PhantomJS也可能值得一看 - 它是WebKit的无头版本(Chrome,Safari等背后的引擎)。

然而,没有这些解决方案都是纯PHP - 如果这是一个要求,你可能不得不用PHP编写你自己的JavaScript引擎(这是什么,我会问我最大的敌人做;))

+0

谢谢。好的一点,PHP不会工作,我会专注于JavaScript框架。但是如何显示实际使用的横幅? – KlaasVaak

0

为了获得JavaScript的输出,您需要一个JavaScript引擎(例如Google的V8引擎)。 V8引擎是用C++编写的,但有一些资源告诉你embed the V8 engine into PHP。这就是说,你必须“手工”研究输出,并确定究竟哪些东西可以被刮掉以及如何识别它。一旦确定了广告横幅的一些常用语法,就可以编写脚本来提取横幅和所引用的登录页面。

这些都不是一件容易的事情,但如果你有一个你想收集的广告的例子,那么我可以给你更多的建议。