この記事では主に、Microsoft.XMLHTTP を使用して Web コンテンツ (文字化けなし) をクロールし、必要なコンテンツをフィルターする Asp について紹介します。
Asp は Microsoft.XMLHTTP を使用して Web コンテンツ (コード化けなし) をクロールし、必要なコンテンツをフィルタリングします。
サンプルソースコード:
次のようにコードをコピーします。
<%
Dim xmlUrl、http、strHTML、strBody
xmlUrl = Request.QueryString("u")
REM は XML ソースを非同期で読み取ります
http =server.CreateObject("Microsoft.XMLHTTP") を設定します。
http.Open "POST",xmlUrl,false
http.setrequestheader "ユーザーエージェント"、"Mozilla/4.0"
http.setrequestheader "接続"、"キープアライブ"
http.setRequestHeader "Content-Type"、"application/x-www-form-urlencoded"
http.Send()
strHTML = BytesToBstr(http.ResponseBody)
http = 何も設定しない
REM がメインコンテンツをキャプチャします
strBody = GetBody(strHTML,"<divDiv_newsContentc""cnt"">","</div>",0,0)
strBody =Replace(strBody,"(この記事は最初に公開されたのは ","")
strBody =Replace(strBody,"ウェルスパワーネットワーク</a>、転載する場合は出典を明記してください。)","")
strBody =Replace(strBody,"この記事は初出年です。転載の際は出典を明記してください。)","")
strBody =Replace(strBody,"ウェルスパワーネットワーク</a>:","")
strBody =Replace(strBody,"この記事は最初に公開されました","")
Response.Write RegRemoveHref(strBody)
REM は、対応する URL 応答の HTML を取得します
関数 BytesToBstr(body)
薄暗いオブジェクトストリーム
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.本体の書き込み
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "UTF-8"
'元のデフォルトの UTF-8 エンコーディングを GB2312 エンコーディングに変換します。それ以外の場合は、それを直接使用します
中国語の文字を含む Web ページを呼び出すと、XMLHTTP でコードが文字化けします。
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 何も設定しない
終了機能
REM は正規表現を使用して、内でマークされたコンテンツをキャプチャします。
関数 GetBody(ConStr,StartStr,OverStr,IncluL,IncluR)
ConStr="$False$" または ConStr="" または IsNull(ConStr)=True または StartStr="" または IsNull(StartStr)=True または OverStr="" または IsNull(OverStr)=True の場合
GetBody="$False$"
終了関数
終了の場合
DimConStrTemp
ディムスタート、オーバー
ConStrTemp=Lcase(ConStr)
StartStr=Lcase(StartStr)
OverStr=Lcase(OverStr)
Start = InStrB(1, ConStrTemp, StartStr, vbBinaryCompare)
開始<=0 の場合
GetBody="$False$"
終了関数
それ以外
IncluL=False の場合
Start=Start+LenB(StartStr)
終了の場合
終了の場合
Over=InStrB(Start,ConStrTemp,OverStr,vbBinaryCompare)
オーバー<=0 またはオーバー<=スタートの場合
GetBody="$False$"
終了関数
それ以外
InclR=True の場合
オーバー=オーバー+LenB(オーバーStr)
終了の場合
終了の場合
GetBody=MidB(ConStr,Start,Over-Start)
終了機能
REM はハイパーリンクをフィルタリングします
関数 RegRemoveHref(HTMLstr)
ra = 新しい正規表現を設定します
ra.IgnoreCase = True
ra.Global = True
ra.Pattern = "<a[^>]+>(.+?)<//a>"
RegRemoveHref = Replace(ra.replace(HTMLstr,"$1"),"href=""http://www.927953.com""","")
END関数
%>
レンダリングは次のとおりです。