📜  Nightmare.js的介绍和安装

📅  最后修改于: 2022-05-13 01:56:28.976000             🧑  作者: Mango

Nightmare.js的介绍和安装

Nightmare由 Segment 提供,是一个高级浏览器自动化库。此 Nightmare 的目标是遵循用户操作的路径(如 goto、type、click 等),以便通过 API 公开几个简单的方法,让每个脚本块感觉同步,而不是深度嵌套的回调.它被设计用于跨没有 API 的站点自动执行任务,但现在最常用于爬网、UI 测试等。

注意: Nightmare 旨在在 NodeJS 4.x 或更高版本上运行。

Nightmare.js 的替代品:有很多替代品,Nightmate.js 的一些最常见的替代品是:

  • 傀儡师
  • 幻影JS
  • 花式盒子
  • MomentJS
  • 洛达什
  • 下划线

项目设置和安装所需模块:

  • 第 1 步:使用以下命令安装Nightmare.jsJquery模块:

    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

输出:等待几秒钟,您将获得输出。