【发布时间】:2018-10-09 15:33:59
【问题描述】:
过去几周我一直在进行网络爬取。 使用 PHP 库(PHP Simple DOM),我正在运行一个 php 脚本(使用终端)以从中获取一些 URL 和 JSON 一些数据。到目前为止,这一直工作得很好。
最近想扩展一个特定站点的爬取,遇到了如下问题:
与目前为止的任何其他网站不同,该网站仅呼应准系统标记服务器端,而是依赖单个 JS 脚本来构建相关的标记 onload。
显然我的 PHP 脚本无法处理这个问题(因为它没有执行 JS,因此据我所知,该网站大部分时间都是空白的),因此我无法抓取该网站,因为尚未创建内容。
我不确定如何继续。是否真的可以将我当前的 PHP 脚本转换为与该站点“兼容”,或者我是否需要换档并合并浏览器,即选择完全不同的路线?
我目前认为我需要创建在 iFrame 中打开 URL 的 html/js 站点,这样我就可以通过控制台手动运行 JS 函数来提取数据。 不过,我希望有一个更可行的方法。
谢谢,
【问题讨论】:
-
我想这个问题对于独立开发者来说很难。 Google 不久前就教他们的爬虫运行 JS,而且他们是唯一成功的人
-
你需要像 phantomjs 这样可以像浏览器一样加载页面的东西,那么它实际上真的很容易。但是,您将无法使用 php 执行此操作,您需要使用 node 或 python。不要被@LevitatorImbalance 评论分心,事实并非如此。
-
您要抓取的网站必须是非javascript版本。否则,Google bot 将看不到任何有用的信息。
-
@DanielFaure nope,请参阅“Fetch as Google”功能。或者您可以在Google Page Speed 上测试网站preactjs.com,看看Google 完美呈现JS
-
@LevitatorImbalance,感谢您的建议。我必须对此进行大量研究(我仍然生活在过去)。我找到了一个执行这种爬取的付费工具,有一个非常好的介绍。看看sitebulb.com
标签: javascript php web-crawler