我正在使用.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处理的解决方案,但是它对我不起作用,也许是因为我不理解。 我将不胜感激,谢谢您。