Javascript 如何将PhantomJS作为服务器运行并远程调用它?
这可能是一个非常基本的问题。我希望将无头浏览器Javascript 如何将PhantomJS作为服务器运行并远程调用它?,javascript,node.js,seo,phantomjs,Javascript,Node.js,Seo,Phantomjs,这可能是一个非常基本的问题。我希望将无头浏览器PhantomJS作为服务器运行,而不是作为命令行工具运行 一旦它运行,我想通过HTTP远程调用它。我唯一需要的是发送一个URL并返回HTML输出。我需要它为AJAX应用程序生成HTML,使其可搜索 有可能吗?最简单的方法是制作一个python脚本或一些简单的东西来启动服务器并使用python WebSocket与之通信,使用排序的web表单查询网站并获取页面源。任何自动化都可以通过cron作业完成,或者如果您在Windows上,您可以使用任务功能自
PhantomJS
作为服务器运行,而不是作为命令行工具运行
一旦它运行,我想通过HTTP远程调用它。我唯一需要的是发送一个URL并返回HTML输出。我需要它为AJAX应用程序生成HTML,使其可搜索
有可能吗?最简单的方法是制作一个python脚本或一些简单的东西来启动服务器并使用python WebSocket与之通信,使用排序的web表单查询网站并获取页面源。任何自动化都可以通过cron作业完成,或者如果您在Windows上,您可以使用任务功能自动启动python脚本。您可以将PhantomJS作为Web服务器运行,因为它具有。“示例”文件夹包含例如。它独立运行,没有任何依赖项(没有节点) 如果您想通过node.js运行PhantomJS,那么使用节点的PhantomJS桥也很容易做到这一点
var http = require('http');
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
http.createServer(function (req, res) {
// TODO: parse `request` and determine where to go
page.open(someURL, function (status) {
res.writeHead(200, {'Content-Type': 'text/plain'});
// TODO: do something on the page and generate `result`
res.end(result);
});
}).listen(8080);
});
});
笔记
只要不同时有多个请求,您就可以自由地使用它。如果这样做,则需要同步请求(因为只有一个
页面
对象),或者需要在每个请求上创建一个新的页面
对象,并在完成后再次执行关闭()
。谢谢。对于我来说,重要的是不要为每个请求执行phantom
。我需要幻影作为服务器运行。可能吗?是的。也许你以前没用过幻影?PhantomJS不像HTMLUnit那样是一个HTML解析器,而是一个基于Gecko(Firefox使用的后端)的无头浏览器。浏览器运行为一个单独的进程,然后由Python、java、C++等编写的API控制,然后可以轻松地将其转换成服务器端浏览器页面处理器单元。如果您使用WebSocket技术或生成一个可以提交请求的网页,然后python代码可以在单独的PhantomJS进程上执行这些请求,则可以远程控制。您是对的,我还没有使用PhantomJS。再次感谢您的解释。感谢您如此详细和深入的回复。伟大的解释卓越的答案,+1是一个全面的代码示例,它精确地显示了它的外观。
var http = require('http');
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
http.createServer(function (req, res) {
// TODO: parse `request` and determine where to go
page.open(someURL, function (status) {
res.writeHead(200, {'Content-Type': 'text/plain'});
// TODO: do something on the page and generate `result`
res.end(result);
});
}).listen(8080);
});
});