Vb.net 在vb中使用.innertext时发生Xpath错误
我编写这段代码是为了从用户插入的URL中获取html代码。 我使用HtmlAgilityPack是因为我只想处理代码体、标题等的特定部分。我成功地从网站下载了数据,但我发现我的Xpath代码不正确。 以下是相关代码:Vb.net 在vb中使用.innertext时发生Xpath错误,vb.net,xpath,html-agility-pack,Vb.net,Xpath,Html Agility Pack,我编写这段代码是为了从用户插入的URL中获取html代码。 我使用HtmlAgilityPack是因为我只想处理代码体、标题等的特定部分。我成功地从网站下载了数据,但我发现我的Xpath代码不正确。 以下是相关代码: Dim htmlWeb As String = URL (inserted by the user) Dim htmlDoc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument htmlDoc
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.LoadhtmlWeb时,它会给我一个错误:URI格式不受支持。但当我加载HTML时,它似乎可以工作。主要问题就在这条线上
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,但它也不起作用。如果有URL,请使用Load方法,如果有html页面,请使用LoadHtml。在这种情况下,您似乎需要第一种方法:
htmlDoc.Load(htmlWeb)
作为示例,要获取body标记,可以使用以下简单的XPath//body
更新:
我忽略了一个事实,即HAP的HtmlDocument与XDocument不同,不能直接从URL加载。该方法仅接受本地计算机中文件的路径。要从URL加载HtmlDocument,您需要使用HtmlWeb的加载方法。试着这样做:
Dim htmlWeb As New HtmlWeb
Dim htmlDoc As HtmlAgilityPack.HtmlDocument = htmlWeb.Load(URL)
Dim htmlText As String
htmlDoc.OptionFixNestedTags = True
Dim myBR As HtmlNode = htmlDoc.DocumentNode.SelectSingleNode("//body")
htmlText = myBR().InnerText
尝试了一个简单的wiki url-好的,更新了我的答案。事实证明,HtmlDocument的加载方法不支持从web URL加载xml。