节点x-ray从url集合中抓取数据

时间:2016-09-21 06:56:35

标签: javascript node.js x-ray

我试图在网站中抓取一个列表,该列表会导致其他具有相同格式的网页。

我能够创建所有标签的集合,但是当我尝试访问一组页面时,我尝试使用它创建的密钥不会添加到我返回的对象中。

以下是我尝试处理堆栈溢出的示例:

var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/', {
    title: x(['a@href'], 'title'),
}) (function(err, obj) {
    console.log(obj);
});

我希望我的obj.title成为所有href页面的标题列表,而不是我得到一个空对象。

但是,如果我尝试使用第一个href,那么我的标题就没问题了。

var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/', {
    title: x('a@href', 'title'),
}) (function(err, obj) {
    console.log(obj);
});

之前有没有人遇到过这个问题?

2 个答案:

答案 0 :(得分:0)

之前我遇到过这个问题,我的解决方案是这样的:

var Xray = require('x-ray');
var x = Xray();
x('http://stackoverflow.com/', {
    title: x('a', [{links:'@href'}])
}) (function(err, obj) {
    obj.forEach(function(links.link) {
        x(links.link, "title")(function(err, data){
                console.log(data) // should print the title
        });
});

如果您遇到任何问题,请告诉我。

答案 1 :(得分:0)

您可以使用X射线Crawling to anoth site

var Xray = require('x-ray');
var x = Xray();

x("http://stackoverflow.com/", {
  main: 'title',
  image: x('#gbar a@href', 'title'), // follow link to google images 
})(function(err, obj) {
/*