【发布时间】:2017-10-21 15:53:49
【问题描述】:
我正在尝试 html-scraping 以获得乐趣,我的问题是。 这个 Response.write() 方法在 IDE 的 try catch 块内部工作。 但它不会返回服务器上的 Response.write() 方法。
try
{
if (x == 1)
{
Url = "https://www.**********.com/" + arama;
}
else
{
Url = "https://www.**********.com/" + arama + "?pagingOffset=" + y;
}
doc = web.Load(Url);
liste = doc.DocumentNode.SelectNodes("//*[@id=\"searchResultsTable\"]/tbody/tr[" + i + "]/td[1]/a")[0].Attributes["href"].Value;
Url = "https://www.**********.com" + liste;
doc = web.Load(Url);
liste = doc.DocumentNode.SelectNodes("//*[@id=\"classifiedDetail\"]/div[1]/div[2]/div[3]/div[1]/div/div[1]/h5")[0].InnerText;
liste2 = doc.DocumentNode.SelectNodes("//*[@id=\"phoneInfoPart\"]/li/span[1]")[0].InnerText;
count++;
liste = liste.ToUpper();
Response.Write(count + " - " + liste + " Tel: " + liste2 + "</br>");
}
catch { }
简而言之,这个网络应用程序使用 HtmlAgilityPack 通过其 xpath 查找 html 值,我使用 Response.write() 返回内部值,而 innertext() 为我将其转换为字符串。
【问题讨论】:
-
首先要避免空的 catch 块,它们会默默地吞下任何异常。我强烈怀疑抛出了一个异常,但你不知道是什么,因为你的代码实际上是在说“我不在乎这是否不起作用。没有人需要知道出了什么问题。”
-
它说 =“对象引用未设置为对象的实例。”
-
对,所以你得到了 NullReferenceException。您应该查看堆栈跟踪以找出原因,并阅读stackoverflow.com/questions/4660142/…
-
当网站在另一个主机上时,我如何读取堆栈跟踪。因为当我使用 ide 时,我没有收到此错误。
-
好吧,你发现 message 是“对象引用未设置为对象的实例” - 所以你得到了 那个信息,只需让它向您显示整个异常,而不仅仅是消息。
标签: c# .net web-scraping try-catch html-agility-pack