【发布时间】:2019-06-02 14:07:34
【问题描述】:
我正在尝试获取文本,但总是收到 NullReferenceException 错误。我快疯了。它工作了一会儿,但我又开始遇到这个错误。我会得到帖子标题的。
我尝试更改我的 XPath。我尝试了不同的 XPath。
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
for (int i = 4; i < 9; i++)
{
VeriAl(Url: "https://cracked.to/Forum-Combolists?sortby=started&order=desc&datecut=9999&prefix=0", XPath: "//table[@class='tborder clear']//tr[" + i + "]//td[2]//div[1]//span[1]//span[1]//a", tag: "title",CikanSonuc: listView1);
}
}
public void VeriAl (String Url, String XPath, String tag,ListView CikanSonuc)
{
try
{
url = new Uri(Url);
}
catch (UriFormatException)
{
if (MessageBox.Show(text: "UriFormatException", caption: "Hata", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error) == DialogResult.OK)
{
}
}
catch (ArgumentNullException)
{
if (MessageBox.Show(text: "ArgumentNullException", caption: "Hata", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error) == DialogResult.OK)
{
}
}
WebClient client = new WebClient();
try
{
html = client.DownloadString(url);
}
catch (WebException)
{
if (MessageBox.Show(text: "WebException", caption: "Hata", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error) == DialogResult.OK)
{
}
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
try
{
CikanSonuc.Items.Add(doc.DocumentNode.SelectSingleNode(XPath).Attributes[tag].Value);
}
catch (NullReferenceException)
{
if (MessageBox.Show(text: "NullReferenceException", caption: "Hata", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error) == DialogResult.OK)
{
}
}
【问题讨论】:
-
你有没有拔出获取值的命令并确保它实际上得到了一个值?
-
请更新您的问题以包含
html的内容。另外请在您的问题中将CikanSonuc.Items.Add(doc.DocumentNode.SelectSingleNode(XPath).Attributes[tag].Value)拆分为多行代码(每行在行尾都有;),以便每个操作中只有一个.。然后告诉我们哪一行抛出了异常。 -
您尝试访问的 URL 在显示加载消息几秒钟后执行客户端重定向到自身。您尝试访问的表格实际上不在下载的 html 中,因为下载的 html 是加载页面。
-
它不会直接到达您想要的页面。
标签: c# html-agility-pack