Nightmare.js的介绍和安装
Nightmare由 Segment 提供,是一个高级浏览器自动化库。此 Nightmare 的目标是遵循用户操作的路径(如 goto、type、click 等),以便通过 API 公开几个简单的方法,让每个脚本块感觉同步,而不是深度嵌套的回调.它被设计用于跨没有 API 的站点自动执行任务,但现在最常用于爬网、UI 测试等。
注意: Nightmare 旨在在 NodeJS 4.x 或更高版本上运行。
Nightmare.js 的替代品:有很多替代品,Nightmate.js 的一些最常见的替代品是:
- 傀儡师
- 幻影JS
- 花式盒子
- MomentJS
- 洛达什
- 下划线
项目设置和安装所需模块:
第 1 步:使用以下命令安装Nightmare.js和Jquery模块:
npm install nightmare npm install jquery
第 2 步:创建一个index.js文件并使用以下方式 require 模块:
const Nightmare = require('nightmare'); nightmare = Nightmare({ show: true});
这将创建一个可以导航到网络的 Nightmare 实例。可以将可选参数放入 Nightmare() 中传递的 JSON 中,如上所示。
项目结构:它将如下所示。
示例:让我们看一个使用 Nightmare.js 进行 CraigLists 报废的示例:
文件名:index.js
index.js
var jquery = require('jquery')
var Nightmare = require('nightmare'),
nightmare = Nightmare()
var city = process.argv[2]
// Use the first argument passed as the city to be searched
nightmare.goto('http://' + city +
'.craigslist.org/search/cpg?is_paid=yes&postedToday=1')
// Visits the city specified by the user and gets all computer
// gigs posted that day
.wait(2000)
// Wait 2 seconds so page is guaranteed to be fully loaded
.evaluate(function () {
var gigs = [];
// Create an array to hold all gigs gathered by following code
$('.hdrlnk').each(function () {
item = {}
item["title"] = $(this).text()
item["link"] = $(this).attr("href")
gigs.push(item)
})
// Create a gig object with title and link, then push
// to the 'gigs' array
return gigs
// Pass the gigs array forward so it can be looped through later on
})
.end()
.then(function (result) {
for (gig in result) {
console.log(result[gig].title);
}
// Print each gig to the console in a neat format
})
使用以下命令运行index.js文件:
node index.js cityname
例如,我们可以搜索saltlakecity ,如下所示:
node index.js saltlakecity
输出:等待几秒钟,您将获得输出。