Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用API对node.js执行浏览器操作_Javascript_Node.js - Fatal编程技术网

Javascript 使用API对node.js执行浏览器操作

Javascript 使用API对node.js执行浏览器操作,javascript,node.js,Javascript,Node.js,我想做一些活动,例如在网站上点击。我可以在chrome中使用javascript(或chrome扩展)来实现这一点,但是否可以不打开chrome而使用服务器端代码来实现呢?没有提供API。它不是刮片,而是执行某种操作。NodeJS用于解释JavaScript代码。它不在浏览器环境中运行,因此缺少DOM和事件处理。然而,您实际上可以使用包在NodeJS环境中模拟浏览器 但是,您应该小心使用这种方法,因为某些方法(例如)仍然不起作用 也许您应该重新考虑为什么要在服务器端使用DOM和事件 Phanto

我想做一些活动,例如在网站上点击。我可以在chrome中使用javascript(或chrome扩展)来实现这一点,但是否可以不打开chrome而使用服务器端代码来实现呢?没有提供API。它不是刮片,而是执行某种操作。

NodeJS用于解释JavaScript代码。它不在浏览器环境中运行,因此缺少DOM和事件处理。然而,您实际上可以使用包在NodeJS环境中模拟浏览器

但是,您应该小心使用这种方法,因为某些方法(例如)仍然不起作用

也许您应该重新考虑为什么要在服务器端使用DOM和事件

PhantomJS:NodeJS的无头浏览器 是一个用于NodeJS的应用程序,用于测试、刮取等。它为您提供了一个功能齐全的浏览器,可以模拟浏览器

使用CasperJS进行刮削 如果你想抓取网站,你可以使用一个名为PhantomJS的库。例如:

var casper = require('casper').create();
var links;

function getLinks() {
// Scrape the links from top-right nav of the website
    var links = document.querySelectorAll('ul.navigation li a');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('href')
    });
}

// Opens casperjs homepage
casper.start('http://casperjs.org/');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});

也许您应该重新考虑为什么要在服务器端使用DOM和事件。
因为这是触发事件的唯一方法?@Nately Jamerson:trigger events on what?为什么你需要在服务器端使用DOM?我有很多链接,我想点击网站上的某个按钮,你能在不触发DOM的情况下完成吗?没有API提供。我有一堆链接,我想触发点击网站上的某些按钮而不去cilent端,你能不触发DOM吗?没有提供API。@NatelyJamerson您正在寻找的是NodeJS本身无法实现的,但您可以在NodeJS中使用PhantomJS包来实现。我更新了答案。
var casper = require('casper').create();
var links;

function getLinks() {
// Scrape the links from top-right nav of the website
    var links = document.querySelectorAll('ul.navigation li a');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('href')
    });
}

// Opens casperjs homepage
casper.start('http://casperjs.org/');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});