javascript - 使用 PhantomJS 进行网页抓取

标签 javascript web-scraping phantomjs

有没有一种方法可以像浏览器一样执行网页中的所有 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 之上。

你实际上有像clickwaitfetchText等函数

关于javascript - 使用 PhantomJS 进行网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472057/

相关文章:

javascript - JavaScript 中 for-body 的运行时语义

javascript - 在同一页面上的多个搜索框上动态应用 Jquery 中的搜索过滤器

javascript - casperjs (phantomjs) 网站更新后无法提交表单

javascript - 使用移动数据会导致意外结果

javascript - Canvas:将图像转换为灰度

python - 无法让脚本以自定义方式使用 concurrent.futures 填充结果

javascript - 使用 javascript 填充表格抓取页面

python - 如何将爬取的数据从 Scrapy 以 csv 或 json 的形式上传到 Amazon S3?

python - 通过 Python 脚本抓取动态网站 : how to get the values?

javascript - 私有(private)预渲染服务器不会渲染 angularjs 脚本?