見出し画像

C#でスクレイピングするコード

C#でウェブサイトにアクセスして、文章をダウンロードする(スクレイピング)コードです。
main()を目的によって変えたり、getSource()を自分のコードにコピペして使って下さい。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net; //追加してください。
using System.IO; //追加してください。

namespace getSource
{
   class Program
   {
       static void Main(string[] args)
       {
           string url = "https://baacash.com/scraping"; //ダウンロードしたいURL
           string source = ""; //結果を入れるハコ

           if (getSource(url, ref source))
           {
               //ダウンロード成功したときの処理
               Console.WriteLine(source);
               Console.ReadKey(); //キー入力待ち
           }
           else
           {
               //ダウンロード失敗したときの処理
               Console.WriteLine("ダウンロードに失敗しました。");
               Console.ReadKey(); //キー入力待ち
           }
       }
       static bool getSource(string url, ref string source)
       {
           HttpWebRequest webreq = (HttpWebRequest)
           WebRequest.Create(url);
           try
           {
               //ウェブサイトの内容をダウンロード
               HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse();
               Stream st = webres.GetResponseStream();
               
               //ウェブサイトの内容をハコにいれる
               StreamReader sr = new StreamReader(st);
               source = sr.ReadToEnd();
               
               st.Close();
               sr.Close();
           }
           catch (WebException e)
           {
               Console.WriteLine(e.Message); //ダウンロードに失敗した場合、理由を表示
               Console.WriteLine("getSourceで例外が発生しました。\n" + url);
               return false;
           }
           return true;
       }
   }
}

getSource(string url, ref string source)

引数
第一引数(string urlのところ)にはダウンロードしたいURLをいれます。
第二引数(ref string sourceのところ)にはダウンロードした文章をいれるためのハコをいれます。

ref sourceのように書いておけば、getSource()が実行されたあと、結果が入ります。

返り値
ダウンロードに成功したらtrue、失敗したらfalseを返します。
失敗したときは、エラー(例外)の内容が出力されるようになっています。

注意点

Console.ReadKey()は消す
main()にConsole.ReadKey()が入っていて、キー入力を待つようになっています。
とりあえず動かしてみたときに、結果がみれるようにするためです。
たくさんアクセスするときはジャマになるので消してください。

usingを忘れない
getSource()をコピペしてつかうときは、

using System.Net; //追加してください。
using System.IO; //追加してください。

の2行も忘れずにコピーしてください。

プロキシを使う場合は、

をみてみてください。

この記事が気に入ったらサポートをしてみませんか?