ねえ、私はC#とHtmlAgilityPackの両方を学び始めています。これまでのところ、私は小さなテストプロジェクトに取り組んでいます。私が抱えている問題の1つは、ファイルが2回ダウンロードされないように、ファイルがすでに存在するかどうかを確認することです。
もう1つの問題は、Webサイトをスクレイピングしたり、画像をダウンロードしたりしているときに、プログラム全体が一定期間フリーズしてから再び機能するようになることですが、これを回避する方法はありますか?
if (!File.Exists(@"Res\" + pokeName + ".jpg"))
{
var item = doc.DocumentNode.SelectNodes("//a[@class='image']//img")[0];
if (doc.DocumentNode.SelectNodes("//a[@class='image']//img") != null)
{
getImage(item.GetAttributeValue("src", ""));
pictureBox1.Load(@"Res\" + pokeName + ".jpg");
}
}
else
{
pictureBox1.Load(@"Res\" + pokeName + ".jpg");
}
と
public void getImage(string url){
string imageUrl = @""+ url;
string saveLocation = @"Res\"+ pokeName + ".jpg";
byte[] imageBytes;
HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
WebResponse imageResponse = imageRequest.GetResponse();
Stream responseStream = imageResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream ))
{
imageBytes = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
imageResponse.Close();
FileStream fs = new FileStream(saveLocation, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write(imageBytes);
}
finally
{
fs.Close();
bw.Close();
}
}
どんな助けでも大歓迎です:)