HtmlAgilityPack:路径中的非法字符

时间:2014-02-21 07:07:53

标签: c# html-parsing html-agility-pack

我在此代码中收到“路径中的非法字符”错误。我已经提到“在这里发生错误”作为发生错误的行中的注释。

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 个答案:

答案 0 :(得分:47)

您应该使用LoadHtml方法加载字符串。从文件

加载Load方法
htmlDoc.LoadHtml(hotel.InnerText);   

答案 1 :(得分:5)

这只是意味着您正在尝试使用invalid character in the file path/name加载文件。

错误在于:

htmlDoc.Load(hotel.InnerText); 

..因为该重载需要文件的路径:

public void Load(string path)

使用LoadHtml加载HTML片段:

public void LoadHtml(string html)