Използване на HTML Agility Pack и CSS селектори - ITVDN блог

pack

В допълнение към наблюденията за HAP като цяло, ще бъдат посочени методите за разширяване, предоставени от пакета HAP.CSSSelectors, което улеснява избора.

Заден план

Успешно се използва Html Agility Pack за клиента, HTML документите бяха анализирани, за да се извлече необходимата информация. Разширенията CSSSelector ще добавят мощен нов слой абстракция за събиране на необходимите данни.

Използване на кода

Примерните пакети ще трябва да бъдат импортирани с помощта на NuGet. Описанията на пакетите ще бъдат заредени в проекта, но ще трябва да инсталирате диспечера на пакети NuGet, за да възстановите библиотеките.

В проекта беше включен много прост HTML файл с примери за въпроси, които са необходими за решаването на техните проекти.

За да тествате без излишни промени, трябва да копирате HTML файла в следното устройство и директория - C: \ TestData.

HtmlAgility разполага с редица класове за своите добавъчни класове и изброявания, които представляват различни части на DOM, тези класове включват HtmlAttribute, HtmlAttributeCollection, HtmlCommentNode и т.н.

Първият клас, който ще научим, е класът HTMLDocument. Този клас има методи за зареждане и анализиране на документ в съответните му части.

Изходният код извиква всяка секция от кода, използвайки номенклатурата (част X), където X е число.

За да се използва, трябва да се внедри следният ред:

HtmlAgilityPack.agpack = нов HtmlAgilityPack.HtmlDocument ();

Следващият метод извиква метода за зареждане на документа. Можете да го заредите от ред:

// или от ресурс -

Файлът включва липсващ затварящ таг на шрифта и неподходящ затварящ таг. Той работи чудесно в браузъра, не извежда грешка в HAP, но може да бъде тестван за това.

var грешки = agpack.ParseErrors;

ParseErrors ще върне колекция и брой грешки. Доста интересен раздел, затварянето на шрифта няма да доведе до грешка.

След зареждането на документа двата основни начина за търсене са:

SelectNodes (низ XPath) // от DocumentNode

GetElementbyId (низ на идентификатора) // от HtmlDocument

Тъй като може да има само един идентификатор, getElementById ще върне един възел, а SelectNodes ще върне колекция от възли, тъй като използването на XPath може да съвпада с един или повече елементи.

var comment = agpack.DocumentNode.SelectNodes ("// comment () [съдържа (., 'Таблица за стартиране:')]");