4.5 Знайомство з інструментами вилучення - екстракцією

Екстрактор пошукача WebMagic extraction базується на використанні Jsoup і моїй власній розробці Xsoup.

4.5.1 Jsoup

Jsoup це простий HTML-парсер, що підтримує використання CSS селекторів, як спосіб знайти елементи. Для цілей розробки WebMagic, проведено детальний аналіз з сирцевим кодом Jsoup конкретних статей див. Jsoup - нотатки дослідженнь.

4.5.2 Xsoup

Xsoup заснований на Jsoup, розроблявся як XPath аналізатор. Раніше для парсера WebMagic застосовувався HtmlCleaner, у якого є деякі проблеми під час використання. Основна його проблема полягає в точностях та помилках XPath - локалізації у сторінках якого не валідна структура коду, і це складно налаштувати.

Реалізований Xsoup більш відповідає до потреб пошукових сканерів. Також приємно відзначити - тестування показує продуктивність Xsoup перевищує HtmlCleaner більше, аніж у два рази. Розробка Xsoup продовжується і досі, зараз підтримується загальний синтаксис для парсингу, що приведено у таблиці:

Назва Вираз Підтримка
nodename nodename так
immediate parent / так
parent // так
attribute [@key=value] так
nth child tag[n] так
attribute /@key так
wildcard in tagname /* так
wildcard in attribute /[@*] так
function function() частково
or a | b так, починаючи з 0.2.0
parent in path . or .. ні
predicates price>35 ні
predicates logic @class=a or @class=b так, починаючи з 0.2.0

Зазначте, що це умовні визначення - часні - лише для пошукоча і за для зручності використання функції XPath, проте ці функції не є стандартами XPath - зверніть на це увагу.

Вираз Опис XPath1.0
text(n) текст безпосередньо n-го дочірнього вузола, якщо 0 - тоді для всіх тільки text()
allText() всі прямі і непрямі тексти дочірніх вузлів не підтримує
tidyText() всі прямі і непрямі тексти дочірніх вузлів, а також замінити деякі мітки обгорок, так, щоб відображався очищенний звичайний текст не підтримує
html() внутрішній HTML, HTML теги не вміщати в себе не підтримує
outerHtml() внутрішній HTML, вміщувати в тому числі тегі HTML у себе не підтримує
regex(@attr,expr,group) тут @attr і може бути вибраний з групи, за замовчуванням group0 не підтримує

4.5.3 Saxon

Saxon є потужним аналізатор XPath з підтримкою XPath 2.0 синтаксису. Webmagic-saxon інтеграція з Saxon є попередніми. Але тепер, схоже, синтакис XPath 2.0 є передовим, і здається, що його використовують у розробці не так багато пошукових сканерів.

results matching ""

    No results matching ""