2016-09-21 58 views
1

我試圖在導致其他頁面具有相同格式的網站中抓取一個列表。節點X射線從url集合中抓取數據

我能夠創建所有標籤的集合,但是當我嘗試訪問頁面集合時,我嘗試使用它創建的密鑰不會添加到我返回的對象中。

這裏是我想要堆棧溢出做榜樣:

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

我期待我的obj.title是所有A HREF網頁標題的列表,而不是我得到一個空的對象。

但是,如果我嘗試使用第一個href然後我得到標題沒有問題。

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

有沒有人遇到過這個問題?

回答

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 
     }); 
}); 

讓我知道如果你遇到任何問題。

+0

感謝那些爲我工作! – JoshChang

+0

非常歡迎@JoshChang,我很高興能幫到你。乾杯。 –

+0

假設obj有50個hrefs。 @sudo_mAniac 威爾obj.forEach(函數(links.link){ X(links.link, 「標題」)(函數(ERR,數據){} 使序列50個GET請求..? –

0

你可以使用X射線的Crawling to anoth site

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

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