【C#】正規表現でプロキシリストを取り出す

C#

こんにちは、ひつじ先輩です。

C#でプロキシリストのあるサイトにアクセスし、プロキシをダウンロードするコードです。

今回はダウンロードしたソースコードから正規表現でプロキシを取り出します。

しかし、処理の流れや正規表現の作りかたはプロキシ以外のときも同じです。

getSource(string url, ref string source)

まずは、プロキシリストがあるサイトのソースをダウンロードします。

 

List<string> extractProxy(string source)の使いかた

取ってきたソースからプロキシを取り出し、リストへ書き込みます。

引数

先ほどダウンロードしたソースを入れます。

返り値

プロキシのリストが入ってきます。

using

正規表現を使うため、

をコードの最初に書き加えてください。

List<string> extractProxy(string source)の解説

メソッドの意味と、どういう考えで作ったか、書いていきます。

ソースを読んでみる

取ってきたソースを見ると、

<a title=”AF” onMouseOver=”s(‘AF’,’121-100-49-1.rdns.afghan-wireless.com’)” onMouseOut=”d()” class=”A”>121.100.49.1:80</a></li>・・・・・・・

といった表現が連続しているところがあります。

ここが、サイト上でプロキシを順番に表示させているところです。

「class=”A”>」と「</a></li>」のあいだの赤字がプロキシです。

正規表現で取り出す

プロキシがどこに書いてあるか分かったら、今度はそれを取り出します。

のところで、ソースの中のどんな文字列を取り出すか、決めています。

のところが正規表現と言われるものです。

先ほどのソースコードで、

「class=”A”>」と「</a></li>」のあいだにプロキシがあると分かっています。

この正規表現はそれと一致するようになっています。

 

以下、部分ごとに説明します。

「class=”A”>」のような文字列と一致する。

ただし、Aのところは何か1文字入っていれば一致とする。

という意味です。

「class=”B”>」とか「class=”C”>」という表記もたくさんあるためです。

()は、()内を”一致した文字列リスト”に入れる。

()内の「\d.*?」は、何か数字から始まる文字列。

という意味です。

 

まとめると、

は、

「class=”A”>」みたいなものと「</a></li>」のあいだの、数字から始まる文字列を取ってくる。

という意味になります。

注意点

この記事には、コード領域でない平文にコードが書いてあるところがあります。

そういう箇所では、本来半角ダブルクオーテーションのところも全角となっています。

ご注意ください。

更新履歴

2017/07/02:半角ダブルクオーテーションを全角に差し替え。

C#
中の人をフォローする
ひつじ先輩

仕事を辞めたいゆとり世代。「辞めたあと、お金がなくなったらどうしよう」という恐怖から、いまだに社畜。FX歴8年目、「ローリスクで脱サラする」をテーマに副業・投資について書きます!問題はゆとり世代にあるのではなく、ゆとりのない社会にある。

中の人をフォローする
めぇめぇマネー

コメント