Как извлечь объект DOM из внешнего URL-адреса в nodejs

1

Мне нужно создать базу данных со случайным текстом с разных сайтов, чтобы выполнить тесты для моего модуля, который работает с предложениями. Чем больше предложений у меня есть, тем лучше, потому что больше случаев я могу предсказать и покрыть в алгоритмах. Я начал делать это вручную, но мне потребовалось 8 часов, чтобы получить только 500 страниц текста, что не очень эффективно.

Мне интересно, можно ли загрузить сайт в некоторый модуль npm, чтобы я мог получить объект DOM этого веб-сайта, а затем использовать JS для извлечения текста, например. <p>, <h1-6>, <li>. В веб-браузерах в окне F12 devTools есть доступ к DOM. Можно ли получить доступ к DOM с помощью некоторого настольного пакета npm?

Я знаю, что нет возможности получить доступ к DOM внешнего веб-сайта, загруженного в iframe. Как насчет использования nodeJS с рабочего стола?

  • 0
    может быть, что-то вроде npmjs.com/package/xmldom ?
Теги:
dom
iframe
npm

1 ответ

1

Ну, если я правильно понял ваш вопрос, я думаю, что это, похоже, web scrapping, а также получение элементов DOM и вещей под ним, хорошо, если это так, тогда вы можете использовать модули npm, которые делают материал для веб-лома, тот, который довольно известные модули npm.

1. Cheerio: его версия jQuery на стороне сервера, если вы знакомы с jQuery, вам будет легко работать, причем ее легкий и гибкий в использовании. В основном после извлечения удаленного контента (ajax-запрос или любой HTTP-запрос), который может быть проанализирован так же, как выбор dom в jQuery, одним из недостатков этого является недостаток в получении динамического контента, произошедшего на веб-сайте или на странице.


2. JSDom: это самое близкое к безглавому браузеру, который обеспечивает тесное представление на странице или DOM, он использует веб-элементы под своим поясом, чтобы вернуть содержимое на странице, а также возвращает динамический контент, обновленный на странице

  • 0
    web scrapping - я не знал, что это так называется, спасибо. Наконец-то я понял, что тоже могу сделать это с phantomJS
  • 0
    @pawel да, вы можете сделать то же самое с PhantomJS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню