HtmlAgilityPack:路径中存在非法字符。

26

在这段代码中,我遇到了一个“路径中有非法字符”的错误。我已经在错误发生的那一行添加了注释“此处出现错误”。

var document = htmlWeb.Load(searchUrl);
var hotels = document.DocumentNode.Descendants("div")
             .Where(x => x.Attributes.Contains("class") &&
             x.Attributes["class"].Value.Contains("listing-content"));

int count = 1;
foreach (var hotel in hotels)
{
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.OptionFixNestedTags = true;
    htmlDoc.Load(hotel.InnerText);      // Error Occuring Here //
    if (htmlDoc.DocumentNode != null)
    {
        var hotelName = htmlDoc.DocumentNode.SelectNodes("//div[@class='business-container-inner']//div[@class='business-content clearfix']//div[@class='business-name-wrapper']//h3[@class='business-name fn org']//div[@class='srp-business-name']//a[0]");
        foreach (var name in hotelName)
        {
            Console.WriteLine(name.InnerHtml);
        }
    }
}
2个回答

52

您应该使用 LoadHtml 方法来加载字符串。而Load方法则是从文件中加载。

htmlDoc.LoadHtml(hotel.InnerText);   

2
谢谢 LB。这个方法可行。我没有注意到那个小错误。感谢您的时间和回复。 - Pranab

6
这意味着您试图加载一个文件,其文件路径/名称中包含无效字符。错误出现在这里:
htmlDoc.Load(hotel.InnerText); 

因为该过载函数期望文件路径:

public void Load(string path)

使用 LoadHtml 加载 HTML 片段:
public void LoadHtml(string html)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接