Czy jest coś takiego jak nokogiri Ruby na nodejs? Mam na myśli przyjazny dla użytkownika parser HTML.
Widziałem na stronie modułów Node.js kilka parserów, ale nie mogę znaleźć czegoś ładnego i świeżego.
Czy jest coś takiego jak nokogiri Ruby na nodejs? Mam na myśli przyjazny dla użytkownika parser HTML.
Widziałem na stronie modułów Node.js kilka parserów, ale nie mogę znaleźć czegoś ładnego i świeżego.
Odpowiedzi:
Jeśli chcesz zbudować DOM , możesz użyć jsdom .
Jest też cheerio , ma interfejs jQuery i jest znacznie szybszy niż starsze wersje jsdom, chociaż w dzisiejszych czasach są one podobne pod względem wydajności.
Możesz rzucić okiem na htmlparser2 , który jest parserem przesyłania strumieniowego, i zgodnie z jego testem porównawczym wydaje się być szybszy niż inne i domyślnie nie ma DOM. Może również tworzyć DOM, ponieważ jest również pakowany w moduł obsługi, który tworzy DOM. To jest parser używany przez cheerio.
parse5 również wygląda na dobre rozwiązanie. Jest dość aktywny (11 dni od ostatniego zatwierdzenia od tej aktualizacji), zgodny z WHATWG i jest używany w jsdom , Angular i Polymer .
A jeśli chcesz parsować HTML do skrobania stron internetowych , możesz użyć YQL 1 . Jest do tego moduł węzła . YQL Myślę, że byłoby najlepszym rozwiązaniem, jeśli Twój HTML pochodzi ze statycznej strony internetowej, ponieważ polegasz na usłudze, a nie na własnym kodzie i sile przetwarzania. Pamiętaj jednak, że nie będzie działać, jeśli strona zostanie niedozwolona przez plik rob.txt witryny, ale YQL nie będzie z nią działać.
Jeśli witryna, którą próbujesz zeskrobać, jest dynamiczna , powinieneś używać przeglądarki bezgłowej, takiej jak phantomjs . Spójrz także na casperjs , jeśli zastanawiasz się nad phantomjs. I możesz kontrolować casperjs z węzła za pomocą SpookyJS .
Obok fantomów jest zombiejs . W przeciwieństwie do fantomów, których nie można osadzić w nodejs, zombiejs jest tylko modułem węzła.
Dla tych ostatnich rozwiązań istnieje nettuts + toturial .
1 Od sierpnia 2014 biblioteka YUI, która jest wymagana dla YQL, nie jest już aktywnie utrzymywana, źródło
Spróbuj https://github.com/tmpvar/jsdom - dajesz mu trochę HTML i daje DOM.
Możesz także spojrzeć na zdjęcie rentgenowskie: https://github.com/lapwinglabs/x-ray