以下是代碼:
<%
出錯時繼續下一步
昏暗 objXMLHTTP, xml
設定 xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.開啟「GET」,「 http://chanye.finance.sina.com.cn/yj/2005-01-05/236914.shtml 」, False
xml.發送
tmpstr= xml.responseText
ep=clng(instr(1,tmpstr,"meta_data2"))+18
tmpstr=替換(tmpstr,vbcrlf,"")
tmpstr=替換(tmpstr,chr(9),"")
tmpstr=替換(tmpstr,chr(32),"")
mydata=mid(tmpstr,1,ep)
recfilen=server.MapPath("tempstr.txt")
設定 Astream=Server.CreateObject("Adodb.Stream")
Astream.type=2
Astream.Mode = 3
Astream.open
Astream.CharSet = "GB2312"
Astream.Position =0
Astream.Writetext mydata,1
Astream.SaveToFile recfilen,2
Astream.close
設定 Astream1=Server.CreateObject("Adodb.Stream")
Astream1.type=2
Astream1.模式 = 3
Astream1.CharSet = "GB2312"
Astream1.open
Astream1.LoadFromFile(recfilen)
assp=Astream1.size
crttmpstr=Astream1.ReadText(Assp)
Astream1.close
sp1=clng(instr(1,crttmpstr,"meta_data1"))+16
ep1=clng(instr(sp1,crttmpstr,"NAME=meta_data2"))-7
lth1=ep1-sp1
newdata=mid(crttmpstr,sp1,lth1)
%>
<html>
<頭>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<風格>
身體{
字體大小:12px
}
TD{
字體大小:12px
}
</風格>
<title>用Asp取得Dll加密新聞內容</title>
<表寬度=“540”邊框=“0”對齊=“中心”cellpadding=“0”cellspacing=“0”>
<tr>
<td>更新時間:<%=now %>取得內容長度:<%=lth1 %>
位元組注意要使用http://127.0.0.1/Ip1HtmlView.dll你得先下載這個Dll文件,怎麼下不用多說吧?
<物件 id=HtmlIp1View 程式碼庫=http://127.0.0.1/Ip1HtmlView.dll#version=1,0,1,14 classid=CLSID:D854FC15-D3EA-496A-B2A0-A772A3DE1D09>
<param name="meta_data1" value="<%=newdata %>">
<參數名稱=“meta_data2”值=“”>
<參數名稱=“meta_data3”值=“”>
<參數名稱=“meta_data4”值=“”>
<參數名稱=“meta_data5”值=“”>
<參數名稱=“meta_data6”值=“”>
<參數名稱=“meta_data7”值=“”>
<參數名稱=“meta_data8”值=“”>
<參數名稱=“baseurl”值=“111”>
<參數名稱=“隨機”值=“111”>
</對象></td>
</tr>
</表>
</正文>
</html>
對程式碼很多的說明:之所以要使用Adodb.Stream,是因為直接取得的內容始終達到想要的效果,ep的位置達到了預期的長,而我嘗試用instrb,midb等函數同樣得到另一種酸人迷惑的結果,所以無奈下出此下策,還望高手指點(哎喲,我怎麼感覺不溜函數的哦)。記錄到資料庫,成為自己的,用上面的東西加寫資料庫應該就夠了吧。
要防止Dll被下載也難,對於IIS來是說可以加個.dll的ISAPI擴展,執行檔只要選個Dll檔動作限制為「空」(什麼都行,其實亂輸入就可以了。)要是DLL不為外站工作嘛,就不敢亂說。
另外,由於本人大學沒畢業,又是學打鐵的,所以一定有很多垃圾的地方,請不吝指正,謝謝。