私はいくつかの収集プログラムを開発し、多くの収集プログラム コードを研究したため、収集プログラムの原理についてはある程度理解しています。まず収集の原則について話しましょう。
収集手順の主な手順は次のとおりです。
1. 収集したページのコンテンツを取得する
2.取得コードから使用されるすべてのデータを抽出します
1. 収集したページのコンテンツを取得する
収集されたページのコンテンツを取得するために現在私が知っている一般的に使用されている ASP メソッドは次のとおりです。
1.serverXMLHTTPコンポーネントを使用してデータを取得します
次のようにコードをコピーします。
関数 GetBody(weburl)
'オブジェクトの作成
Dim ObjXMLHTTP
ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP) を設定します。
'ファイルを非同期形式でリクエストします
ObjXMLHTTP.Open GET、weburl、False
ObjXMLHTTP.send
ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
ウェン
'結果を取得します
GetBody=ObjXMLHTTP.responseBody
'オブジェクトを解放する
ObjXMLHTTP=Nothing を設定します
終了機能
呼び出し方法:
GetBody(ファイルのURLfアドレス)
2. またはデータを取得する XMLHTTP コンポーネント
次のようにコードをコピーします。
関数 GetBody(weburl)
'オブジェクトの作成
取得 = CreateObject(Microsoft.XMLHTTP) を設定します
検索あり
.Open Get、weburl、False、、
。送信
GetBody = .ResponseBody
で終わる
'オブジェクトを解放する
取得 = なしを設定します
終了機能
呼び出し方法:
GetBody(ファイルのURLfアドレス)
この方法で取得したデータ コンテンツは、使用する前にエンコードして変換する必要があります。
次のようにコードをコピーします。
関数 BytesToBstr(body,Cset)
薄暗いオブジェクトストリーム
set objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.本体の書き込み
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 何も設定しない
終了機能
呼び出し方法:BytesToBstr(変換するデータ、エンコード)のエンコードはGB2312とUTF-8が一般的です
2. 取得コードから使用されるすべてのデータを抽出します
私が現在持っているメソッドは次のとおりです。
1. ASP の組み込み MID 機能を使用して必要なデータを傍受します
次のようにコードをコピーします。
関数本体(wstr,start,over)
start=新しい文字列(wstr,start)
'処理が必要なデータの一意の開始タグを設定します
over=新しい文字列(wstr,over)
'開始に対応するのは、処理する必要があるデータの唯一の終了タグです。
body=mid(wstr,start,over-start)
'表示するページの範囲を設定
終了機能
呼び出し方法:ボディ(収集したページの内容、開始タグ、終了タグ)
2. 正規表現を使用して必要なデータを取得します
次のようにコードをコピーします。
関数本体(wstr,start,over)
Set xiaoqi = 新しい正規表現の設定オブジェクト
xiaoqi.IgnoreCase = True'大文字と小文字を無視します
xiaoqi.Global = True' を全文検索に設定
xiaoqi.Pattern = &start&.+?&over&'正規表現
Set Matches =xiaoqi.Execute(wstr)'設定の実行を開始します
xiaoqi=何も設定しない
本体=
試合中の各試合について
body=body&Match.Value 'ループマッチング
次
終了機能
呼び出し方法:ボディ(収集したページの内容、開始タグ、終了タグ)
収集手順の詳細なアイデア:
1. Web サイトのページ分割されたリスト ページの各ページのアドレスを取得します。
現在、ほとんどの動的 Web サイトには、ページング アドレスに関する次のようなルールがあります。
動的ページ
最初のページ:index.asp?page=1
2 ページ目:index.asp?page=2
3 ページ目:index.asp?page=3
……
静的ページ
最初のページ: page_1.htm
2 ページ目: page_2.htm
3ページ目:page_3.htm
……
Web サイトのページング リスト ページの各ページのアドレスを取得するには、page_<%=&page&%>.htm などの変数を使用して、各ページ アドレスの変化する文字を置き換えるだけです。
2. 収集したWebサイトのページ分割されたリストページのコンテンツを取得します
3. ページング リスト コードから収集されたコンテンツ ページの URL 接続アドレスを抽出します。
ページ分割されたページ内のほとんどのコンテンツ ページ リンクにも、次のような固定ルールがあります。
<a href=url1>接続 1</a> <br>
<a href=url2>接続 2</a> <br>
<a href=url3>接続 3</a> <br>
次のコードを使用して、URL 接続のコレクションを取得します。
次のようにコードをコピーします。
xiaoqi = 新しい正規表現を設定します
xiaoqi.IgnoreCase = True
xiaoqi.Global = True
xiaoqi.パターン = .+?
Set Matches =xiaoqi.Execute(ページリストコンテンツ)
xiaoqi=何も設定しない
URL=
試合中の各試合について
url=url&一致.値
次
4. 収集コンテンツページのコンテンツを取得し、抽出マークに従って収集コンテンツページから取得されるデータを傍受します。
動的に生成されるページであるため、ほとんどのコンテンツ ページには同じ HTML タグが含まれており、これらの通常のタグに基づいてコンテンツの必要な部分を抽出できます。
のように:
各ページには Web ページのタイトル <title>Webpage title</title> があります。<title></title> の間の値を取得するには、上で書いた MID インターセプト関数を使用することも、正規表現を使用して取得することもできます。
例: body(<title>Web ページのタイトル</title>,<title>,</title>)