1
我使用html敏捷包來解析我加載的幾個文本文件。然後我將解析出的數據保存到字符串列表中以供進一步處理。然而,當我用這個方法,它永遠不會打線:方法掛起for循環,不會繼續
MessageBox.Show("test");
此外,如果我有以下這種方法的任何其他代碼,它沒有一個被觸發。
有人對我的錯誤有任何建議嗎?
整個方法包含如下:
private void ParseOutput()
{
nodeDupList = new List<string>();
StreamWriter OurStream;
OurStream = File.CreateText(dir + @"\CombinedPages.txt");
OurStream.Close();
for (int crawl = 1; crawl <= crawlPages.Length; crawl++)
{
var web = new HtmlWeb();
var doc = web.Load(dir + @"\Pages" + crawl.ToString() + ".txt");
var nodeCount = doc.DocumentNode.SelectNodes(@"/html[1]/body[1]/div[1]/table[3]/tbody[1]/tr[td/@class=""style_23""]");
int nCount = nodeCount.Count;
for (int a = 3; a <= nCount; a++)
{
var specContent = doc.DocumentNode.SelectNodes(@"/html[1]/body[1]/div[1]/table[3]/tbody[1]/tr[" + a + @"]/td[3]/div[contains(@class,'style_24')]");
foreach (HtmlNode node in specContent)
{
nodeDupList.Add(node.InnerText + ".d");
}
}
}
MessageBox.Show("test");
}
我創建了一個履帶式保存多個HTML頁面的文本,並分別使用這種方法解析。 我只是使用MessageBox來顯示它不會繼續執行「for循環」。我在我的解決方案中調用了多個方法,它不會遍歷它們。
的應用程序是針對.Net框架4.
編輯贏窗體應用程序: 感謝您的幫助。
我通過它在次環路
for (int a = 3; a <= nCount; a++)
{
var specContent = doc.DocumentNode.SelectNodes(@"/html[1]/body[1]/div[1]/table[3]/tbody[1]/tr[" + a + @"]/td[3]/div[contains(@class,'style_24')]");
foreach (HtmlNode node in specContent)
{
nodeDupList.Add(node.InnerText + ".d");
}
}
崩潰時VaR的specContent是空的調試器重新運行之後實現的。
沒有發生異常;該方法剛剛結束。
由於該網站是動態的,我爬行它很少返回null,但在它發生過的幾個實例。
將斷點(F9)錯誤的' OurStream.Close()'方法,然後遍歷代碼。看起來似乎並不存在問題,所以它可能是你沒有展示過的東西,或者只是更微妙的東西。 –
你有沒有嘗試在調試器中通過它? – Amy
多次調試最終發現specContent有時會爲空,並且該方法會結束但不會返回異常。我爬行的網站動態變得難以重複和確定它。 關於爲什麼它沒有返回異常的任何想法?我知道我還沒有處理過這個。 – jordanhill123