繁体   English   中英

如何检查它是否是404错误页面并使用HtmlAgilityPack做一些事情

[英]How to check if it is 404 error page and do something using HtmlAgilityPack

我正在尝试使用HtmlAgilityPack从不同的URL获取多个数据。

  • 它将获得产品价格。
  • 但是当产品库存为0时,它们将关闭页面。

我的程序将价格添加到列表框。 当页面给出404时,应添加一个空的列表框项。

有什么方法可以使程序更简单? 我不能在同一按钮上使用相同的变量。 我要添加相同的代码来更改数字(6)。

WebRequest SiteyeBaglantiTalebi06 = HttpWebRequest.Create("https://www.themia.com.tr/The-Mia-Dekor-Mermer-22-Cm-Gri,PR-2432.html");
WebResponse GelenCevap06 = SiteyeBaglantiTalebi06.GetResponse();
StreamReader CevapOku06 = new StreamReader(GelenCevap06.GetResponseStream());

string KaynakKodlar06 = CevapOku06.ReadToEnd();
int IcerikBaslangicIndex06 = KaynakKodlar06.IndexOf("<div class=\"productPrice\">") + 122;
int IcerikBitisIndex06 = KaynakKodlar06.Substring(IcerikBaslangicIndex06).IndexOf("</div>");

listBox3.Items.Add((KaynakKodlar06.Substring(IcerikBaslangicIndex06, IcerikBitisIndex06)));

如果你投的WebResponse你有一个HttpWeResponse您可以访问StatusCode属性- https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebresponse.statuscode?view=netframework-4.7.2 #System_Net_HttpWebResponse_StatusCode ;

只需注意一件事-当HttpWebRequest收到不表示成功的状态代码时,就不能使HttpWebRequest不引发异常(更重要的是不使用此方法)。 这意味着您必须准备好捕获将引发的异常。

因此,以您的示例为例-

WebRequest SiteyeBaglantiTalebi06 = HttpWebRequest.Create("https://www.somesite.com/NotARealPath");
try
{
    WebResponse GelenCevap06 = SiteyeBaglantiTalebi06.GetResponse();
    // do things with the result
}
catch (WebException ex)
{
    using (WebResponse response = ex.Response)
    {
        HttpWebResponse asHttp = (HttpWebResponse)response;
        if (asHttp.StatusCode == System.Net.HttpStatusCode.NotFound)
        {
            // your 404 logic here
        }
        else 
        {
            // your "something went wrong but it's not a 404" logic 
        }
    }
}

至于使代码更简单-在不了解程序和尝试执行的操作的情况下,很难准确理解您的意思。 通常,这里有一些想法-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM