Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在vb中使用.innertext时发生Xpath错误_Vb.net_Xpath_Html Agility Pack - Fatal编程技术网

Vb.net 在vb中使用.innertext时发生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

我编写这段代码是为了从用户插入的URL中获取html代码。 我使用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.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。