我想创建一个抓取网站的脚本,它应该返回该页面上显示的所有横幅的位置。
横幅的位置大部分时间来自已知域。但横幅不是HTML中的简单图像或swf文件。大多数情况下,Javascript用于显示横幅。
因此,如果从banner-domain加载.swf文件或图像文件,则应返回该URL。
这可能吗?我怎么能粗略地这样做?
最好是它还可以返回该广告的目标网页。怎么解决?
答案 0 :(得分:3)
您可以使用selenium在真实浏览器中打开页面,然后访问DOM。
PhantomJS也可能值得一看 - 它是WebKit的无头版本(Chrome,Safari等背后的引擎)。
然而,这些解决方案都不是纯粹的PHP - 如果这是一个要求,你可能不得不用PHP编写自己的JavaScript引擎(这不是我要求我最大的敌人做的事情;)
答案 1 :(得分:0)
为了获得JavaScript的输出,您需要一个JavaScript引擎(例如Google的V8引擎)。 V8引擎是用C ++编写的,但有一些资源可以告诉你embed the V8 engine into PHP。
说到这一点,你必须“手动”研究输出,并确切地确定可以抓取什么以及如何识别它。一旦您确定了广告横幅的一些常用语法,您就可以编写脚本来提取横幅和引用的着陆页。
这一切都不容易,但如果您有一个广告的例子,那么我可以给你更多的建议。