Jak najskuteczniej analizować stronę internetową za pomocą Node.js.


Muszę przeanalizować prostą stronę internetową i pobrać dane z html, takie jak „src”, „data-attr” itp. Jak mogę to zrobić najbardziej wydajnie, korzystając z Node.js? Jeśli to pomoże, używam Node.js 0.8.x.
P.S. to jest

stronie internetowej
http://tunes.io/
które rozbieram. Chcę uzyskać listę aktualnych utworów i stworzyć własną aplikację html5 do słuchania na urządzeniach mobilnych.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Robiłem to wiele razy. Będziesz chciał użyć

PhantomJS
http://phantomjs.org/
jeśli czyszczona witryna internetowa intensywnie wykorzystuje JavaScript. Należy pamiętać, że PhantomJS nie jest Node.js. To zupełnie inne środowisko wykonawcze JavaScript. Możesz zintegrować się przez

phantomjs-node
https://github.com/sgentle/phantomjs-node
lub

node-phantom
https://github.com/alexscheelmeyer/node-phantom
ale oba są niezłymi hakerami. YMMV jest z nimi. Unikaj wszystkiego, co dotyczy jsdom. Przyprawi cię o ból głowy - w tym

Zombie.js
http://zombie.labnotes.org/
.
Powinieneś użyć

Cheerio
https://github.com/MatthewMueller/cheerio
w połączeniu z

żądanie
https://github.com/mikeal/request... To powinno wystarczyć dla większości stron internetowych.
Napisałem post na blogu o używaniu Cheerio z prośbą:

szybkie i brudne skrobanie ekranu za pomocą Node.js,
http://procbits.com/2012/04/11 ... erio/
ale znowu, jeśli jest to intensywne korzystanie z JavaScript, użyj PhantomJS w połączeniu z

CasperJS
http://casperjs.org/
.
Mam nadzieję że to pomoże.
Fragment zawierający żądanie i powitanie:
var request = require('request')
, cheerio = require('cheerio');var searchTerm = 'screen+scraping';
var url = 'http://www.bing.com/search?q=' + searchTerm;request(url, function(err, resp, body){
$ = cheerio.load(body);
links = $('.sb_tlst h3 a');//use your CSS selector here
$(links).each(function(i, link){
console.log($(link).text() + ':\n ' + $(link).attr('href'));
});
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz spróbować

PhantomJS
http://phantomjs.org/... Tutaj

dokumentacja
http://code.google.com/p/phant ... ation
o używaniu go do czyszczenia ekranu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zgadzam się z @JP Richardson, że Cheerio najlepiej nadaje się do czyszczenia witryn bez zawartości JS.
W przypadku ciężkich witryn JS użyj

Casper
http://casperjs.org/... Zapewnia duże abstrakcje nad duchami i obietnicami w stylu API. Zastanawiają się, jak zeskrobać razem w swoich dokumentach:

http://docs.casperjs.org/bath/last/short guide.html
http://docs.casperjs.org/en/latest/quickstart.html
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz iść za fantomem, użyj node-phantom. Mam repozytorium git hub, które używa ich razem do generowania plików PDF z html, jeśli chcesz rzucić okiem.
Ale nie wybrałbym Phantoma, ponieważ robi więcej niż zwykle chcesz, a cheerio jest szybsze.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się