2015-07-10 319 views
-1

您好,我正在嘗試從網站收集所有數據。C#URI無效:URI爲空

在開始我收集該網站上的所有鏈接。在那之後訪問它們。 問題是,當我訪問多個網頁的網頁的「無效的URI:URI是空的」錯誤顯示在一些頁面。這些是一些失敗的網址。

http://syayoyu.com/category/zensinyokudiet 
http://syayoyu.com/fruitgranola-6759.html 
http://syayoyu.com/category/diet/fruitgranola 

從瀏覽器訪問並逐一訪問它們工作正常。但是,當我嘗試在循環訪問錯誤發生。你能告訴我它有什麼問題嗎?

這是我訪問代碼

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
request.UserAgent = "A .NET Web Crawler"; 
WebResponse response = request.GetResponse(); 
Stream stream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(stream); 
string htmlText = reader.ReadToEnd(); 
+0

循環在哪裏?你的'url'變量的價值是什麼?你調試了你的代碼嗎? –

+1

對於初學者,請更改您的用戶代理並限制您對同一臺服務器進行的呼叫次數。如果您發出的請求太多,服務器可能會開始阻止它們。 –

回答

2
List<string> list = new List<string>(){ 
@"http://syayoyu.com/category/zensinyokudiet", 
@"http://syayoyu.com/fruitgranola-6759.html", 
@"http://syayoyu.com/category/diet/fruitgranola" 
}; 
foreach (var url in list) 
{ 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
    request.UserAgent = "A .NET Web Crawler"; 
    WebResponse response = request.GetResponse(); 
    //Stream stream = response.GetResponseStream(); 
    //StreamReader reader = new StreamReader(stream); 
    //string htmlText = reader.ReadToEnd(); 
    //Console.WriteLine(htmlText); 
    using (Stream stream = response.GetResponseStream()) 
    { 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      string htmlText = reader.ReadToEnd(); 
      Console.WriteLine(htmlText); 
     } 
    } 
} 

在我的解決方案,它工作正常,那麼有沒有你不知道什麼問題嗎?

+0

很抱歉等很久。我剛剛使用它的結果是一樣的。一個接一個地工作或者通過幾個鏈接循環就可以了。但在大自動添加列表中失敗。 – Batbayar