我有一个使用 C#、windows 窗体和 HTML Agility Pack 开发的网络爬虫。
当网站更改它的代码并破坏它时,我的一切都很好。我知道它经常发生在网络抓取工具上,但现在我无法弄清楚如何纠正这个问题。
此时,我的抓取工具循环通过多个 URL 并从每个页面中抓取数据。
我遇到的问题是它循环通过的站点模板将随机显示较新的模板,该模板没有我在程序中定义的相同的 HTML 类和 ID。我想要做的是运行一个简单的 if 来检查单个节点是否为空,以及它是否为新模板运行一组单独的代码。
我遇到的问题是我的程序在我的 if 语句上抛出了 NullReferenceException。
这是我用来检查它是否为空的语句:
var varitem = doc.DocumentNode.SelectSingleNode("//h1[@class='producttitle']").InnerText;
if (varitem == null) MessageBox.Show("no titles");
它在定义变量的第一行抛出异常,甚至没有进入 if 语句。
任何建议表示赞赏!