現在、C#を使って、スクレイピングをするアプリを作成しているのですが、
client.GetStringAsync の実行時に、
下記のような例外が頻発して起こります。
例外がスローされました:
'System.Threading.Tasks.TaskCanceledException' (mscorlib.dll の中)
また、発生するときとしないときがあり、
発生しないときは1プロセスの中で連続して処理を実行しても発生しません。
考えられる原因はありますでしょうか?
ソースコードと環境は下記になります。
ご教示いただけますと幸いです。
フレームワーク
.Net FrameWork4.5.2
IDE
Visual Studio 2017
OS
Win7 64bit
C#
1 static public void Main() 2 { 3 Scraper scraper = new Scraper(); 4 Task task = scraper.testExec(); 5 task.Wait(); 6 } 7 8 public async Task testExec() 9 { 10 for (int k = 0; k < 100; k++) 11 { 12 Debug.WriteLine(k); 13 14 string html = await getHTML("http://example.com/"); 15 ConvertDataTableToCsv(html); 16 string data = this.getContents(html); 17 System.Threading.Thread.Sleep(1000); 18 } 19 } 20 21 public async Task<string> getHTML(string url) 22 { 23 string htmlText; 24 25 using (HttpClient client = new HttpClient()) 26 { 27 Uri uri = new Uri(url); 28 29 client.DefaultRequestHeaders.Add( 30 "User-Agent", 31 "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"); 32 33 client.DefaultRequestHeaders.Add("Accept-Language", "ja-JP"); 34 client.Timeout = TimeSpan.FromSeconds(1); 35 36 try 37 { 38 htmlText = await client.GetStringAsync(uri); 39 return htmlText; 40 } 41 catch (HttpRequestException e) 42 { 43 Exception ex = e; 44 45 while (ex != null) 46 { 47 ex = ex.InnerException; 48 Debug.WriteLine("例外メッセージ: {0} " + ex.Message); 49 } 50 } 51 52 return null; 53 } 54 } 55

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。