网页抓取异常:浏览器页面与HtmlWeb下载页面内容不一致
网页抓取问题:HtmlWeb下载页面与浏览器显示内容不一致
我正在开展一个小型网页抓取项目,在获取HTML代码的函数环节遇到问题:同一URL下,浏览器审查的页面与HtmlWeb方法下载的页面内容不一致。尝试优化代码流程但未解决问题,分页参数i=2时也出现相同情况。
相关代码如下:
static void Main(string[] args) { string prefixurl = "https://www.aaabbbcccdddeee.de/en/do-business-with-finland/finnish-suppliers/finnish-suppliers-results?query=africa"; for (int i = 1; i < 18; i++) { string url = prefixurl; if (i > 1) { url = prefixurl + "&page=" + i; } var doc = GetDocument(url); var links = GetBusinessLinks(url); List<Empresa> empresas = GetBusiness(links); Export(empresas); } } static List<string> GetBusinessLinks(string url) { var doc = GetDocument(url); var linkNodes = doc.DocumentNode.SelectNodes("/html/body/section/div/div/div/div[2]/div[2]//a"); // //a[@class=\"btn bf-ghost-button\"] var baseUri= new Uri(url); var links = new List<string>(); // 问题出在这里:下载的页面不完整,程序找不到节点 foreach (var node in linkNodes) { var link = node.Attributes["href"].Value; bool business = link.Contains("companies"); if (business) { link = new Uri(baseUri, link).AbsoluteUri; links.Add(link); } } return links; } static HtmlDocument GetDocument(string url) { var web = new HtmlWeb(); HtmlDocument doc = new HtmlDocument() { OptionDefaultStreamEncoding = Encoding.UTF8 }; doc = web.Load(url); return doc; }
问题出在GetBusinessLinks方法中,下载的页面不完整导致程序无法找到目标节点。
内容的提问来源于stack exchange,提问作者mTx
相关产品推荐
相关产品推荐

