Я пишу веб-скребок с Node и рассматриваю возможность использования модуля, такого как Cheerio или JSDom, для анализа HTML в DOM для набора URL-адресов. Однако у меня есть конкретная функциональность, которая необходима.
Моя цель — создать парсер, который может очищать несколько похожих страниц на сайте для получения нескольких ключевых фрагментов информации. Однако у меня есть некоторые образцы данных, которые содержат эти фрагменты информации, и я хочу использовать их для динамического построения модели для этих страниц, а затем очистить остальную часть сайта, используя эту модель.
Чтобы уточнить, есть ли на сайте три страницы, каждая из которых содержит разные продукты:
Страница 1:
<html>
<body>
<h1>Product 1</h1>
<p>Desc</p>
<small>$2.05</small>
</body>
</html>
Страница 2:
<html>
<body>
<h1>Product 2</h1>
<p>Desc</p>
<small>$8.05</small>
</body>
</html>
Страница 3:
<html>
<body>
<h1>Product 3</h1>
<p>Desc</p>
<small>$5.07</small>
</body>
</html>
Скажем, у меня уже есть данные для первого продукта (я знаю название продукта, описание и цену). Я хочу получить селекторы каждого из этих элементов, используя первую страницу, а затем использовать эти селекторы для очистки данных с других страниц.
Учитывая содержимое тега в DOM, как я могу получить селектор CSS для этого элемента? Например:
<html>
<body>
<h1>Hello world</h1>
</body>
</html>
Как я могу предоставить Cheerio/JSDom строку типа «Hello world» и вернуть селектор CSS в DOM, где находится элемент?
Есть ли простой способ сделать это (в том числе с использованием другого фреймворка) или единственный способ просто перебрать весь объект DOM и проверить значения каждого элемента по отдельности?
//*[text()='Hello world']
это не то, что вам нужно? - person OrangeDog   schedule 25.01.2017//*[. = "Hello world"]
- person skAstro   schedule 25.01.2017