C # Въведение в XPath с прост пример за парсер
Въведение.
Сигурен съм, че повече от веднъж или два пъти трябваше да обединя малко съдържание от страниците на сайта. Естествено, първото нещо, което ви идва на ум, е да натъпквате регулярни изрази, където е възможно и повече. Хората не просто излязоха с афоризъм:
Някои хора, когато са изправени пред проблем, си мислят „знам, ще го реша с регулярни изрази“. Сега те имат два проблема.
Така че няма да се спираме на тях, но ще отидем по-далеч. Имаме DOM. Защо да не третирате документа правилно, а не само като ред на HTML код? Ще използваме библиотеката HtmlAgilityPack (http://htmlagilitypack.codeplex.com/). Официалната HAP страница ни казва следното:
»Това е пъргав HTML парсер, който изгражда DOM за четене/запис и поддържа обикновен XPATH или XSLT (всъщност НЕ ТРЯБВА да разбирате XPATH, нито XSLT, за да го използвате, не се притеснявайте ...). Това е .NET кодова библиотека, която ви позволява да анализирате HTML файлове извън мрежата. Анализаторът е много толерантен с деформиран HTML код от „реалния свят“. Обектният модел е много подобен на това, което предлага System.Xml, но за HTML документи (или потоци). "
В свободен превод звучи така:
Това е HTML парсер, който изгражда DOM за четене/запис и поддържа прости XPATH или XSLT (Не е нужно да разбирате XPATH или XSLT, за да го използвате, не се притеснявайте ...). То. NET библиотека, която ви позволява да работите с HTML файлове офлайн. Анализаторът е толерантен към „истински“ неправилен HTML. Обектният модел е много подобен на този, предлаган от System.Xml, но за HTML документи (или потоци).
XPath (XML Path Language) е език за заявки за елементи на XML документ. Проектиран да предоставя достъп до части от XML документ в XSLT трансформационни файлове и е стандарт на W3C. XPath има за цел да внедри DOM навигация в XML. XPath използва компактен синтаксис, различен от XML.
Избор на сайт за експерименти. Взех сайта http://rabota-i-trud.com.ua/.
Изтегляне на HAP от официалния сайт.
Отворете нашето Visual Studio и създайте нов проект.

По-нататък разработката се извършва на Visual Studio 2010 Express Edition за .NET 3.5
Сега трябва да добавите към проекта HAP.

В прозореца, който се появява, изберете раздела „Преглед“ и намерете библиотеката.

В Solution Explorer в Референции можете да видите това:

Остава само да се регистрирате с помощта на HtmlAgilityPack; първо и готово.
Всички автобиографии могат да бъдат намерени на връзката http://rabota-i-trud.com.ua/shortres.php. Можете също да търсите по критерии. Всичко е като хората.

Разборът на този сайт има две части:
- Намерете връзки към страници, които ни интересуват.
- Изберете необходимата информация от тези страници.
Нека да разгледаме „отличителните“ характеристики на връзките за възобновяване на страниците.

Веднага прави впечатление, че връзките за възобновяване имат атрибут class с нова стойност на заглавието. Разглеждайки кода на страницата, стигаме до заключението, че никой друг елемент на страницата няма атрибут class с такава стойност. Така че можем да го използваме като критерий за търсене. Но какво, ако погледнете от другата страна? Ами ако вземем пълния път от корена на документа?
