Написах тази част от кода, за да получа 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