【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#
この記事をシェアする
中の人をフォローする
ひつじ先輩

とにかく社会“不適合度が高い”ので仕事を辞めたい。アフィリエイトで合計393万円を稼ぎ、奨学金を一括返済するもサイトがBANされる。その後、地道な投資で運用資産1600万突破。仮想通貨は-40%、爆損中です。「ローリスクな脱サラ」をテーマに副業・投資について書きます!

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

コメント