C'è qualcosa come il nokogiri di Ruby su nodejs? Intendo un parser HTML intuitivo.
Sulla pagina dei moduli di Node.js avevo visto alcuni parser, ma non trovo qualcosa di carino e di fresco.
C'è qualcosa come il nokogiri di Ruby su nodejs? Intendo un parser HTML intuitivo.
Sulla pagina dei moduli di Node.js avevo visto alcuni parser, ma non trovo qualcosa di carino e di fresco.
Risposte:
Se vuoi creare DOM puoi usare jsdom .
C'è anche cheerio , ha l' interfaccia jQuery ed è molto più veloce delle versioni precedenti di jsdom, anche se al giorno d'oggi sono simili nelle prestazioni.
Potresti voler dare un'occhiata a htmlparser2 , che è un parser di streaming e, secondo il suo benchmark, sembra essere più veloce di altri e nessun DOM di default. Può anche produrre un DOM, poiché è anche in bundle con un gestore che crea un DOM. Questo è il parser utilizzato da Cheerio.
parse5 sembra anche una buona soluzione. È abbastanza attivo (11 giorni dall'ultimo commit a partire da questo aggiornamento), conforme a WHATWG, ed è utilizzato in jsdom , Angular e Polymer .
E se vuoi analizzare HTML per lo scraping web , puoi usare YQL 1 . C'è un modulo nodo per questo. YQL Penso che sarebbe la soluzione migliore se il tuo HTML proviene da un sito Web statico , poiché fai affidamento su un servizio, non sul tuo codice e sulla tua potenza di elaborazione. Sebbene si noti che non funzionerà se la pagina non è consentita da robot.txt del sito Web, YQL non funzionerà con essa.
Se il sito web che stai cercando di raschiare è dinamico , dovresti utilizzare un browser senza testa come phantomjs . Dai un'occhiata anche a casperjs , se stai considerando phantomjs. E puoi controllare casperjs dal nodo con SpookyJS .
Accanto a Phantomjs c'è zombiejs . A differenza dei phantomjs che non possono essere incorporati in nodejs, zombiejs è solo un modulo nodo.
C'è un nettuts + toturial per le ultime soluzioni.
1 Da agosto 2014, la libreria YUI, che è un requisito per YQL, non viene più mantenuta attivamente, fonte
Prova https://github.com/tmpvar/jsdom - gli dai un po 'di HTML e ti dà un DOM.
Puoi anche dare un'occhiata alla radiografia: https://github.com/lapwinglabs/x-ray