【发布时间】:2013-06-08 17:09:54
【问题描述】:
我有一个使用 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 语句。
任何建议表示赞赏!
【问题讨论】:
-
检查
doc.DocumentNode.SelectSingleNode("//h1[@class='producttitle']")是否为空。当它为空时,你会得到 NullReferenceException (null.InnerText) -
好吧,我觉得自己像个白痴!谢谢你的帮助。如果你提交你的答案,我会接受它..
标签: c# winforms web-scraping html-agility-pack