2015-08-04 18 views
10

Bazı içeriği node.js x-ray kazıma çerçevesi ile kazımaya çalışıyorum. İçeriği tek bir sayfadan alabilmem için bağlantıyı nasıl takip edeceğimi ve bir seferde bir alt sayfanın içeriğini nasıl alacağımı kafamdan alamıyorum.NodeJS x-ray web-kazıyıcı: nasıl linkleri takip eder ve alt sayfadan içerik alırım

X-ray github profilinde bir örnek var, ancak kodu başka bir siteye değiştirirseniz boş veriyi döndürür.

Kodumu basitleştirdim ve bu örnek için SO sorularını taramasını sağladım. ince

aşağıdaki çalışır:

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

x('http://stackoverflow.com/questions/9202531/minimizing-nexpectation-for-a-custom-distribution-in-mathematica', '#content', [{ 

    title: '#question-header h1', 
    question: '.question .post-text' 

}]) 
(function(err, obj) { 

    console.log(err); 
    console.log(obj); 

}) 

Bu aynı zamanda çalışır:

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

x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{ 

    title: 'h3', 
    question: x('h3 [email protected]', '#content .question .post-text'), 

}]) 
(function(err, obj) { 

    console.log(err); 
    console.log(obj); 

}) 

ama bu bana verir boş ayrıntılar sonuçlanabilir ve yanlış olduğunu anlamaya olamaz:

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

x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{ 

    title: 'h3', 
    link: 'h3 [email protected]', 
    details: x('h3 [email protected]', '#content', [{ 
    title: 'h1', 
    question: '.question .post-text', 
    }]) 

}]) 
(function(err, obj) { 

    console.log(err); 
    console.log(obj); 

}) 

Örümcünün sayfayı listelenen sorularla taramasını ve ardından Her soruya bir bağlantı verin ve ek bilgi alın.

+0

Bu konuyla ilgili bazı cevapları burada bulabilirsiniz: [x-ışını kazıma ikincil URL'lerle ilgili soru] (https://stackoverflow.com/questions/39609440/node-x-ray-crawling-data-from-collection-of- url/39632464) –

cevap

5

Bazı yardımlarla birlikte sorunun ne olduğunu anladım. Bir başkasının da aynı soruna sahip olması durumunda bu cevabı yayınlıyorum.

Çalışma örneği: 2.0.2 çalışır

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

x('http://stackoverflow.com/questions', '#questions .question-summary .summary', [{ 

    title: 'h3', 
    link: 'h3 [email protected]', 
    details: x('h3 [email protected]', { 
    title: 'h1', 
    question: '.question .post-text', 
    }) 

}]) 
(function(err, obj) { 

    console.log(err); 
    console.log(obj); 

}) 
+0

hmm, doğru kodu yapıştırdığınızdan emin misiniz? Hala benimkini işe alamıyorum. Tam olarak aynı şeyi yapmak, tam olarak bu soruda anlattığınız 3 belirtiye sahip .. – krivar

+0

Bu sorgudan elde ettiğiniz sonuç türünü sağlayabilir misiniz? – krivar

+0

, bu diğer insanlar için bir sorun gibi görünüyor. Yani bu şeyin nasıl çalıştığını merak ediyorum. https://github.com/lapwinglabs/x-ray/issues/65 – krivar

1

versiyonu .. github içinde gündeme followhttps burada vardır: //github.com/lapwinglabs/x-ray/issues/189