带有IF语句的C#HTML敏捷包

带有IF语句的C#HTML敏捷包,c#,html-parsing,web-scraping,html-agility-pack,C#,Html Parsing,Web Scraping,Html Agility Pack,我有一段代码,我需要运行if语句来设置变量的值。问题是,当第一个条件为null时,它将失败。谁能告诉我我做错了什么 IF语句位于foreach循环内,该循环在每次迭代时向列表中添加一个值 多谢各位 string result = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; using

我有一段代码,我需要运行if语句来设置变量的值。问题是,当第一个条件为null时,它将失败。谁能告诉我我做错了什么

IF语句位于foreach循环内,该循环在每次迭代时向列表中添加一个值

多谢各位

 string result = string.Empty;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";

        using (var stream = request.GetResponse().GetResponseStream())
        using (var reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.Load(new StringReader(result));
        HtmlNode root = doc.DocumentNode;

        string itemdesc = doc.DocumentNode.SelectSingleNode("//h1[@class='producttitle']").InnerText;

        HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='resultsset']/table/tbody[@class='result']/tr");

        List<string> sellers = new List<string>();
        List<string> prices = new List<string>();

        foreach (HtmlNode node in nodes)
        {
            string seller = string.Empty;
                if(node.SelectSingleNode(".//ul[@class='sellerInformation']/img").GetAttributeValue("alt", string.Empty) != null)
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/img").GetAttributeValue("alt", string.Empty);
                }

                else if (node.SelectSingleNode(".//ul[@class='sellerInformation']/a/img").GetAttributeValue("alt", string.Empty) != null)
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/a/img").GetAttributeValue("alt", string.Empty);
                }

                else
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/li/div/span/a/b").InnerText;
                }


            sellers.Add(seller);
            string price = node.SelectSingleNode(".//span[@class='price']").InnerText;
            prices.Add(price);

        }
string result=string.Empty;
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);
request.Method=“GET”;
使用(var stream=request.GetResponse().GetResponseStream())
使用(var reader=newstreamreader(stream,Encoding.UTF8))
{
结果=reader.ReadToEnd();
}
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
文档加载(新StringReader(结果));
HtmlNode root=doc.DocumentNode;
字符串itemdesc=doc.DocumentNode.SelectSingleNode(//h1[@class='producttitle'])。InnerText;
HtmlNodeCollection nodes=doc.DocumentNode.SelectNodes(//div[@class='resultset']/table/tbody[@class='result']/tr”);
列表卖家=新列表();
定价=新列表();
foreach(节点中的HtmlNode节点)
{
字符串卖方=string.Empty;
if(node.SelectSingleNode(“../ul[@class='sellerInformation']/img”).GetAttributeValue(“alt”,string.Empty)!=null)
{
seller=node.SelectSingleNode(“.//ul[@class='sellerInformation']/img”).GetAttributeValue(“alt”,string.Empty);
}
else if(node.SelectSingleNode(“.//ul[@class='sellerInformation']]/a/img”).GetAttributeValue(“alt”,string.Empty)!=null)
{
seller=node.SelectSingleNode(“.//ul[@class='sellerInformation']]/a/img”).GetAttributeValue(“alt”,string.Empty);
}
其他的
{
seller=node.SelectSingleNode(“../ul[@class='sellerInformation']/li/div/span/a/b”).InnerText;
}
卖方。添加(卖方);
字符串price=node.SelectSingleNode(“.//span[@class='price']”)。InnerText;
价格。添加(价格);
}

可能
SelectSingleNode
返回null,因此调用
GetAttributeValue
是一个null引用问题。在检查属性之前,您需要检查
选择SingleNode
的结果