いわゆるデータ収集プログラムも Web 泥棒プログラムです (叱らないでください)。書き終わったらここに投稿しますので、皆さんも一緒に勉強してください
。データをダウンロードする場合、一部の Web サイトでは、閲覧する前にログインする必要があります。対応するデータを取得するには、ログイン ユーザー名とパスワードを送信する必要がありますが、ログインしましたが、彼のサーバーはゴミではなく、彼はそれをリダイレクトしました。合計 2 つの SESSION が生成されました。この 2 番目の SESSION については、私はそれをキャプチャする方法がわからないので、推測して、Ethereal というソフトウェアを作成し、次のコードを追加しました。 HTTPリクエストのヘッダー。
WebClient myWebClient = new WebClient();
文字列セッションキー=textBox78.Text;
文字列リファラーurl=textBox77.Text;
myWebClient.Headers.Clear();
myWebClient.Headers.Add("Cookie",セッションキー);
myWebClient.Headers.Add("リファラー", Refererurl);
myWebClient.Headers.Add("ユーザーエージェント", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
これはサーバーを欺きます (笑)
2 番目の部分はコードをダウンロードすることです。
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
download = Encoding.Default.GetString(myDataBuffer);
3. 3 番目の部分は、データのマッチングです。次に、IndexOf を使用して 2 つのキー フィールドの位置を取得し、Substring を使用してそれらを取得します。 out. 、これが愚かであることはわかっていますが、正規表現を使用するのは難しいです(誰かアドバイスをください)。文字列を一致させた後、次の関数を使用して HTML コードを削除しました。
プライベート文字列 StripHTML(string strHtml)
{
文字列 [] aryReg ={
@"<script[^>]*?>.*?</script>",
@"<(/s*)?!?((w+:)?w+)(w+(s*=?s*(([""'])( \[""' tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s *)?>",
@"([rn])[s]+",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(セント|#162);",
@"&(ポンド|#163);",
@"&(コピー|#169);",
@"&#(d+);",
@"-->",
@「<!--.*n」
文字
列[] aryRep = {
「」、
「」、
「」、
"""、
「&」、
「<」、
>"、
「」、
"xa1",//chr(161),
"xa2",//chr(162),
"xa3",//chr(163),
"xa9",//chr(169),
「」、
"rn"、
「」
文字
列 newReg =aryReg[0];
文字列strOutput=strHtml;
for(int i = 0;i<aryReg.Length;i++)
{
正規表現 regex = new Regex(aryReg[i],RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
strOutput.Replace("<","")
;
strOutput.Replace(">","");
strOutput.Replace("rn","");
strOutput を返します。
4.
次のステップは、それをデータベースに保存することです。これは誰もが知っていますが、データを書き込むときに、フィールドが長すぎるためデータベースに書き込むことができないという例外が表示されます。 ACCESS を使用しています。SQL を使用してみます。
何か良い提案があれば、コメントを残してください。
出典: http://jetadv.cnblogs.com/archive/2006/02/ 18 /333213.html