2016-07-01 6 views
1

Ich habe noodle.js bereits installiert über npm installieren, und das ist, was mein Code jetzt so ist. Wenn ich jedoch diese Datei (noodleTest.js) im Terminal ausführen: node noodleTest.js, erhalte ich den folgenden Fehler: jQuery.getJSON ist keine Funktion. Ich habe mir die meisten Stack-Overflow-Antworten zu diesem Problem angesehen und konnte keine Lösung finden. Durch das von http://noodlejs.com bereitgestellte Beispiel wird ein Array in der Konsole zurückgegeben, aber wenn ich versuche, dieses Snippet auszuführen, erhalte ich einen Fehler. Jede Hilfe wird geschätzt.Noodle.js Setup/jQuery-Prozess (Web Scraping-Hilfe!)

var noodle = require('noodlejs'), 
jQuery = require ('jquery'); 

var query = { 
     url: 'http://google.com/search?q=javascript', 
     type: 'html', 
     selector: 'h3.r a', 
     extract: 'text' 
    }, 
    uriQuery = encodeURIComponent(JSON.stringify(query)), 
    request = 'http://example.noodlejs.com/?q=' + 
     uriQuery + '&callback=?'; 

// Make Ajax request to Noodle server 
jQuery.getJSON(request, function (data) { 
    console.log(data[0].results); 
}); 

bearbeiten: Ich habe versucht, das Beispiel folgende gegeben bei
http://%20github.com/dharmafly/noodle#noodle-as-a-node-module, und verwendet, um das Beispiel zu noodlejs.com laufen geben, aber ich bin nicht sicher, wie die Daten zu lesen, oder, wie man extrahiere den Inhalt im Objekt. var noodle = require ('noodlejs');

noodle.query({ 
    url:  'http://google.com/search?q=javascript', 
    selector: 'h3.r a', 
    extract: 'text' 
}) 
.then(function (results) { 
    console.log(results); 
}); 

Dies ist die folgende Ausgabe:

[noodle log #1] 
Thu Jul 07 2016 00:09:43 GMT-0700 (PDT) 
Memory: 18.00mb (18870272 bytes) 
Noodle: The query follows... 
{"url":"http://google.com/search?q=javascript","selector":"h3.r a","extract":"text","type":"html","cache":true} 


[noodle log #2] 
Thu Jul 07 2016 00:09:44 GMT-0700 (PDT) 
Memory: 19.00mb (19918848 bytes) 
Cache: Page has been cached 


[noodle log #3] 
Thu Jul 07 2016 00:09:44 GMT-0700 (PDT) 
Memory: 20.00mb (20967424 bytes) 
Cache: Result has been cached 

{ results: [ { results: [Object], created: 2016-07-07T07:09:44.286Z } ] } 
+0

Haben Sie das Beispiel ohne die jquery versucht? Sie können es hier finden https://github.com/dharmafly/noodle#noodle-as-a-node-module oder ist jquery etwas, das Sie verwenden müssen? –

+0

Vielen Dank für die Antwort, ich habe einige Zeit versucht zu verstehen, wie man die Ergebnisse liest, die es zurückgibt, aber ich bin nicht in der Lage, dies herauszufinden, gibt es eine bestimmte Möglichkeit, auf den Inhalt des Objekts zuzugreifen? – Yeeee

Antwort

1

Dies ist ein Beispiel für eine Nudel-Abfrage, die funktioniert. Achte nicht auf die kleinen Details dessen, was wir verschrotten, sieh dir den Selektor an, nach dem ich gefragt habe und was ich extrahiert werden möchte.

Wie Sie können, gibt es einen Selektor, den ich zufällig von der Seite ausgewählt habe, und die extrahierten Daten sind Text. Aber um den extrahierten Text zu sehen, sehe ich, was ich mit den Ergebnissen gemacht habe.

var noodle = require('noodlejs'); 

noodle.query({ 
    url:  'http://edition.cnn.com/', 
    selector: '#intl_homepage1-zone-1 > div.l-container > div > div.column.zn__column--idx-0 > ul > article > a > h2', 
    extract: 'text' 
}) 
    .then(function (results) { 
    console.log(results); 
    console.log(results.results[0]); 

    }); 

Die Ergebnisse sind angekettet ich nicht wirklich überprüfen, warum vielleicht, wenn Sie Sie Forschung besser davon Gebrauch machen kann, aber wenn man Ergebnisse gehen in doppelt so können Sie sehen, was ich habe Sie schließlich bekommen die Informationen, die Sie extrahieren wollten.

+0

Vielen Dank für Ihre Hilfe! Ja, das hat definitiv eine Menge Dinge klargemacht, und ich war mir nicht sicher, warum die Ergebnisse verkettet waren, aber ich denke, dass die Ergebnisse zweimal zurückgegeben werden, wenn man nur das Array zurückgibt, was großartig ist! – Yeeee