2014-10-20 26 views
0

我正在构建一个使用Zombie.js的小应用程序,但标签似乎无法正常工作。我当前的代码如下:Zombie + NodeJS + Express - 与标签一起工作时出错

// libs used 
 
var Zombie = require("zombie"); 
 
var assert = require("assert"); 
 
var http = require('http'); 
 
var express = require('express'); 
 
var bodyParser = require('body-parser'); 
 

 
// server port and host configs 
 
var server_port = 7777; 
 
var server_ip_address = '127.0.0.1' 
 

 
var app = express(); 
 
var httpServer = http.Server(app); 
 

 
app.use(bodyParser.json());  // to support JSON-encoded bodies 
 
app.use(bodyParser.urlencoded()); // to support URL-encoded bodies 
 

 
// o navegador 
 
var browser = null, 
 
    result = "", 
 
    SITE_URL = 'http://en.wikipedia.org/wiki/Programming_language'; 
 

 
app.get('/', function (response, request) { 
 
    console.log('GET request received.'); 
 
    console.log('Opening new tab: ' + SITE_URL); 
 
    // opens a tab 
 
    browser.open(SITE_URL); 
 
    // gets page content 
 
    result = browser.html('#content'); 
 
    console.log('Tab open: '+browser.tabs.index); 
 
    console.log('Content: '+result); 
 
    request.send(result); 
 
}); 
 

 
httpServer.listen(server_port, server_ip_address, function() { 
 
    console.log('Listening on ' + server_ip_address + ':' + server_port); 
 
    // creates the browser. 
 
    browser = new Zombie(); 
 
});

browser.html('#content');回报什么。在我看来,这些标签是打开的,但是当我尝试从当前打开的标签中提取数据时,通过使用浏览器对象,它永远不会工作。 我在做正确的方法吗?什么是在Zombie 2.0.8中使用标签的“正确方式”?我只是找不到任何信息/教程,官方文档对我来说还不够清楚。

编辑:

正如指出的P.scheit,开放(URL)是不够的。继承人的主要结果代码:从选项卡0

$ curl "http://127.0.0.1:7777/?url=http://en.wikipedia.org/wiki/Programming_language&selector=h1" 
$ curl "http://127.0.0.1:7777/?url=http://stackoverflow.com/users/3739186/cyberpunk&selector=h1" 
$ curl "http://127.0.0.1:7777/?url=http://www.google.com.br&selector=a" 

数据:

$ curl "http://127.0.0.1:7777/?tabid=0&selector=a" 
+0

你使用的是僵尸2.0还是旧的api? – 2014-10-21 03:04:21

+0

对不起,之前没有提到,但我使用新的2.0.8 API – 2014-10-21 11:19:01

回答

1

只是猜测疯狂

app.get('/', function (request, response) { 
 
    console.log('GET request received.'); 
 
    if (request.query.url && request.query.selector) { 
 
    console.log('Opening new tab: ' + request.query.url); 
 
    browser.open(request.query.url); 
 
    browser.visit(request.query.url, function() { 
 
     result = browser.html(request.query.selector); 
 
     console.log('Loaded tab content. Sending back to user...'); 
 
     response.send(result); 
 
    }); 
 
    console.log('Tab open: '+browser.tabs.index); 
 
    } else if (request.query.tabid && request.query.selector) { 
 
    var tabid = request.query.tabid; 
 
    if (tabid < browser.tabs.length) { 
 
     browser.tabs.current = tabid; 
 
     console.log('Retrieving content of tab '+tabid+", sending back to user..."); 
 
     result = browser.html(request.query.selector); 
 
     response.send(result); 
 
    } else { 
 
     console.log('Tab not found!'); 
 
     response.send('Tab not found!'); 
 
    } 
 
    } else { 
 
    console.log('Supply either [(the tab id) AND (search selector)] or [(the url to visit) AND (search selector)]!'); 
 
    response.send('Supply either [(the tab id) AND (search selector)] or [(the url to visit) AND (search selector)]!'); 
 
    } 
 
});

运行的服务器后,打开一些标签这里:你打开标签后是否尝试使用访问?我不太确定僵尸是否在通过网址打开时请求网站。

+0

嘿,就是这样。谢啦。现在一切正常。我阅读了文档,并认为“open(url)”就足够了。也许在[docs](https://github.com/assaf/zombie/blob/master/README.md#tabs)中缺乏明确的解释?无论如何,我会编辑我的问题来添加结果代码。 – 2014-10-21 12:49:31

相关问题