Я написал этот фрагмент кода, чтобы получить html-код из URL-адреса, вставленного пользователем. Я использовал HtmlAgilityPack, потому что хочу работать только с определенными частями кода (тело, заголовок и т. д.). Мне удалось «загрузить» данные с веб-сайта, но я думаю, что мой код Xpath как-то неверен. Вот соответствующий код:
Dim htmlWeb As String = URL (inserted by the user)
Dim htmlDoc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument
htmlDoc.LoadHtml(htmlWeb)
Dim htmlText As String
htmlDoc.OptionFixNestedTags = True
Dim myBR As HtmlNodeCollection = htmlDoc.DocumentNode.SelectNodes("...")
htmlText = myBR("...").InnerText
For Each Match_Positive_Word As Match In Regex.Matches(htmlText, Positive_Words)
Positive_Counter = Positive_Counter + 1
Next
For Each Match_Negative_Word As Match In Regex.Matches(htmlText, Negative_Words)
Negative_Counter = Negative_Counter + 1
Next
Вопросы:
- Что мне нужно написать в скобках, чтобы получить, например, данные внутри тега body?
- Правильно ли мое соединение с html-кодом? Есть ли лучший или более эффективный способ сделать это?
ИЗМЕНИТЬ
Когда я делаю htmlDoc.Load(htmlWeb)
, это дает мне ошибку: форматы URI не поддерживаются. Но когда я делаю LoadHtml, кажется, что это работает. Основная проблема заключается в том, что в строке htmlText = myBR.InnerText.
возвращается ошибка: Ссылка на объект не указывает на экземпляр объекта. Вот что я написал:
Dim htmlWeb As String = URL
Dim htmlDoc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument
htmlDoc.LoadHtml(htmlWeb)
Dim htmlText As String
htmlDoc.OptionFixNestedTags = True
Dim myBR As HtmlNode = htmlDoc.DocumentNode.SelectSingleNode("//body")
htmlText = myBR().InnerText
Есть ли что-нибудь, что мне нужно добавить в баракеты myBR? Я пробовал .InnerHtml, и он тоже не работает.
Load()
HtmlDocument
не поддерживает загрузку xml из веб-URL. - person har07   schedule 20.04.2014