C# 使用htmlagilitypack'选择div内容;值不能为空。';

C# 使用htmlagilitypack'选择div内容;值不能为空。';,c#,html-agility-pack,C#,Html Agility Pack,我试图在一个div中刮取内容: <div itemprop="articleBody">random, unique content in this div, different each time</div> 当我访问网页在div之间刮取内容时,我得到以下信息 异常…值不能为空。 参数名称:源 我也尝试过xpath路径,如下所示: /html[1]/body[1]/div[3]/div[2]/div[3]/div[3]/div[5]/div[1]/div[1]/div

我试图在一个div中刮取内容:

<div itemprop="articleBody">random, unique content in this div, different each time</div>
当我访问网页在div之间刮取内容时,我得到以下信息

异常…值不能为空。 参数名称:源

我也尝试过xpath路径,如下所示:

/html[1]/body[1]/div[3]/div[2]/div[3]/div[3]/div[5]/div[1]/div[1]/div[1]
我正在尝试从以下链接获取articleBody:查看来源:


如何修复此问题以获取div的内容?

可能是div标记位于其他标记内。如果是这样,您可以使用
“//div[@itemprop=\“articleBody\”]”
(div标记前面的斜杠)

类程序
{
静态void Main(字符串[]args)=>Task.Run(()=>mainsync(args)).Wait();
静态异步任务mainsync(字符串[]args)
{
var html=await GetResponseFromURI(新Uri(“http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490"));
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(html);
var nodes=doc.DocumentNode.SelectNodes(//div[@itemprop=\“articleBody\”);
如果(节点!=null)
{
WriteLine(nodes.Select(node=>node.InnerText.FirstOrDefault());
}
Console.ReadLine();
}
静态异步任务GetResponseFromURI(Uri)
{
var响应=”;
使用(var client=new HttpClient())
{
HttpResponseMessage结果=等待客户端.GetAsync(uri);
if(结果。IsSuccessStatusCode)
response=wait result.Content.ReadAsStringAsync();
}
返回响应;
}
}


如果没有带有
itemprop=\“articleBody\”
的div标记,则必须使用空检查。

可能是div标记位于其他标记内。如果是这样,您可以使用
“//div[@itemprop=\“articleBody\”]”
(div标记前面的斜杠)

类程序
{
静态void Main(字符串[]args)=>Task.Run(()=>mainsync(args)).Wait();
静态异步任务mainsync(字符串[]args)
{
var html=await GetResponseFromURI(新Uri(“http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490"));
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(html);
var nodes=doc.DocumentNode.SelectNodes(//div[@itemprop=\“articleBody\”);
如果(节点!=null)
{
WriteLine(nodes.Select(node=>node.InnerText.FirstOrDefault());
}
Console.ReadLine();
}
静态异步任务GetResponseFromURI(Uri)
{
var响应=”;
使用(var client=new HttpClient())
{
HttpResponseMessage结果=等待客户端.GetAsync(uri);
if(结果。IsSuccessStatusCode)
response=wait result.Content.ReadAsStringAsync();
}
返回响应;
}
}


如果没有带有
itemprop=\'articleBody\'
的div标记,则必须使用空检查。

检查
itemprop
的值,您有一个大写的BYeah,我的意思是将其添加到div中。。。Eddittedcheck
itemprop
的值,您有一个大写的BYeah,我想把它添加到div。。。EddittStill相同的异常:异常…值不能为null。参数名称:SourceUpper代码在控制台应用程序中适用于我。你能给我看一下输入的html吗?当然可以:查看来源:我更新了答案<代码>“//div[@itemprop=\“articleBody\”]”应该可以工作。仍然是相同的异常:异常…值不能为null。参数名称:SourceUpper代码在控制台应用程序中适用于我。你能给我看一下输入的html吗?当然可以:查看来源:我更新了答案
“//div[@itemprop=\“articleBody\”]”
应该可以工作。
/html[1]/body[1]/div[3]/div[2]/div[3]/div[3]/div[5]/div[1]/div[1]/div[1]
class Program
{
    static void Main(string[] args) => Task.Run(() => MainAsync(args)).Wait();

    static async Task MainAsync(string[] args)
    {
        var html = await GetResponseFromURI(new Uri("http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490"));
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);
        var nodes = doc.DocumentNode.SelectNodes("//div[@itemprop=\"articleBody\"]");
        if (nodes != null)
        {
            Console.WriteLine(nodes.Select(node => node.InnerText).FirstOrDefault());
        }
        Console.ReadLine();
    }

    static async Task<string> GetResponseFromURI(Uri uri)
    {
        var response = "";
        using (var client = new HttpClient())
        {
            HttpResponseMessage result = await client.GetAsync(uri);
            if (result.IsSuccessStatusCode)
                response = await result.Content.ReadAsStringAsync();
        }
        return response;
    }
}