Чи є щось на зразок нокогірі Рубі на nodejs? Я маю на увазі зручний-парсер HTML-аналізатора.
Я бачив на сторінці модулів Node.js деякі парсери, але я не можу знайти щось гарне та свіже.
Чи є щось на зразок нокогірі Рубі на nodejs? Я маю на увазі зручний-парсер HTML-аналізатора.
Я бачив на сторінці модулів Node.js деякі парсери, але я не можу знайти щось гарне та свіже.
Відповіді:
Якщо ви хочете створити DOM, ви можете використовувати jsdom .
Також є cheerio , він має jQuery інтерфейс і він набагато швидший, ніж старіші версії jsdom, хоча в наші дні вони схожі за продуктивністю.
Можливо, ви хочете подивитися на htmlparser2 , який є потоковим аналізатором, і відповідно до його орієнтиру, схоже, він швидший за інших, і за замовчуванням немає DOM. Він також може створити DOM, оскільки він також в комплекті з обробником, який створює DOM. Це парсер, який використовується cheerio.
parse5 також виглядає як хороше рішення. Він досить активний (11 днів з моменту останньої передачі даних після цього оновлення), сумісний із WHATWG, і використовується у jsdom , Angular та Polymer .
І якщо ви хочете проаналізувати HTML для веб-вискоблювання , ви можете використовувати YQL 1 . Для цього є модуль вузла . YQL, я думаю, було б найкращим рішенням, якщо ваш HTML із статичного веб-сайту, оскільки ви покладаєтесь на сервіс, а не власний код та потужність обробки. Хоча зауважте, що вона не працюватиме, якщо сторінку заборонено роботом.txt веб-сайту, YQL не буде працювати з нею.
Якщо веб-сайт, на який ви намагаєтеся скребкувати, динамічний, то вам слід використовувати безголовий браузер, як Phantomjs . Також погляньте на casperjs , якщо ви розглядаєте phantomjs. І ви можете керувати casperjs з вузла за допомогою SpookyJS .
Поруч із фантомками є зомбі . На відміну від phantomjs, який не можна вбудувати у nodejs, zombiejs - це просто модуль вузла.
Для останніх рішень існує nettuts + toturial .
1 З серпня 2014 року бібліотека YUI, яка є вимогою для YQL, більше не підтримується, джерело
Спробуйте https://github.com/tmpvar/jsdom - ви надаєте йому якийсь HTML, і він дає вам DOM.
Ви також можете подивитися на рентген: https://github.com/lapwinglabs/x-ray