例外:远程主机强行关闭了现有连接

时间:2019-08-17 15:03:21

标签: xpath web-scraping html-agility-pack

我正在使用.NET Framework和Html-Agility-Pack工具进行基于Web抓取的项目。

首先,我提出了一种方法来解析https://www.gearbest.com中的“类别”列表,并且完全可以正常工作。

但是现在我需要解析每个类别列表项中的产品。 例如,存在设备类别https://www.gearbest.com/appliances-c_12245/,但是当我运行该方法时,它将返回错误: “基础连接已关闭:接收时发生意外错误”

这是我的代码:

    public void Get_All_Categories()
    {
        var html = @"https://www.gearbest.com/";

        HtmlWeb web = new HtmlWeb();

        var htmlDoc = web.Load(html);

        var nodes = htmlDoc.DocumentNode.SelectNodes("/html/body/div[1]/div/ul[2]/li[1]/ul/li//a/span/../@href");

        foreach (HtmlNode n in nodes)
        {
            Category c = new Category();
            c.Name = n.InnerText;
            c.CategoryLink = n.GetAttributeValue("href", string.Empty);
            categories.Add(c);
        }
    }

这很好用。

    public void Get_Product()
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
        var html = @"https://www.gearbest.com/appliances-c_12245/";

        HtmlWeb web = new HtmlWeb();

        var htmlDoc = web.Load(html);

        var x = htmlDoc.DocumentNode.SelectSingleNode("//*[@id=\"siteWrap\"]/div[1]/div[1]/div/div[3]/ul/li[1]/div/p[1]/a");
        Console.WriteLine(x.InnerText);
        Console.WriteLine("done");

    }

但是该方法不起作用,它返回该错误。 请问我该如何解决? P.S:我已经看到了一些有关HTTPS处理的解决方案,但是它对我不起作用,也许是因为我不理解。 我将不胜感激,谢谢您。

0 个答案:

没有答案