有没有一种方法可以像浏览器一样执行网页中的所有 JavaScript,而无需指定执行哪个函数?在我看到的大多数示例中,这些似乎都指定了您想从抓取的网页中执行 JavaScript 的哪一部分。我需要抓取所有内容并像浏览器一样执行所有 JavaScript 并获取最终执行的代码,我们可以使用 google inspect 查看这些代码?
我确信一定有某种方法,但 PhantomJS 的示例代码似乎没有任何示例解决这个问题。
最佳答案
您没有指定使用 PhantomJS 从页面执行的内容。您使用 PhantomJS 打开页面,所有在 Chrome 或 Firefox 中执行的 JavaScript 也在 PhantomJS 中执行。它是一个没有“头”的完整浏览器。
虽然有一些差异。单击下载链接不会触发下载。 PhantomJS 1.x 所基于的渲染引擎已有将近 4 年的历史,因此某些页面的渲染方式不同,因为 PhantomJS 1.x 可能不支持该功能。 (PhantomJS 2 正在开发中,现在处于非官方的“alpha”状态)
因此,您需要使用 JavaScript 或 CoffeeScript 编写用户在页面上进行的每次交互的脚本。您不调用页面函数。您可以操作 DOM 元素来模拟用户在浏览器中与页面交互。这需要以一种粗暴的方式完成,因为 PhantomJS API 不提供高级用户类功能。如果你想要那些,你必须看看CasperJS它建立在 PhantomJS/SlimerJS 之上。
你实际上有像click
、wait
、fetchText
等函数
关于javascript - 使用 PhantomJS 进行网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472057/