'/*=========================================================================
' * Intro 研究網頁編碼很長時間了,因為最近要設計一個友情鏈接檢測的VBS腳本,而與你鏈接的人的頁面很可能是各種編碼,以前采取的方法是:如果用GB2312查不到再用UTF-8查,再找不到證明對方沒有給你做鏈接雖然不是100%正確,但也差不多了,這兩種編碼用的人比較多,偶然間在收藏夾里的一個地址看到的一個思路,終于可以在采集文章時自動判斷網頁的編碼了。因為研究過程中這個問題困擾很久,雖然現在覺得簡單了,想必很多人還在找,所以把這三個函數貼出來。
' * FileName GetWebCodePage.vbs
' * Author yongfa365
' * Version v2.0
' * WEB http://www.yongfa365.com
' * Email yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 2008-01-29 20:55:46
' * LastModify 2008-01-30 20:55:46
' *==========================================================================*/
Call getHTTPPage("http://www.baidu.com/")
Call getHTTPPage("http://www.google.com/")
Call getHTTPPage("http://www.yongfa365.com/")
Call getHTTPPage("http://www.jfrwli.cn/")
Call getHTTPPage("http://www.aspku.net/")
'得到匹配的內容,返回數組
'getContents(表達式,字符串,是否返回引用值)
'msgbox getContents("a(.+?)b", "a23234b ab a67896896b sadfasdfb" ,True)(0)
Function getContents(patrn, strng , yinyong)
'by www.yongfa365.com 轉載請保留鏈接,以便最終用戶及時得到最新更新信息
On Error Resume Next
Set re = New RegExp
re.Pattern = patrn
re.IgnoreCase = True
re.Global = True
Set Matches = re.Execute(strng)
If yinyong Then
For i = 0 To Matches.Count -1
If Matches(i).Value<>"" Then RetStr = RetStr & Matches(i).SubMatches(0) & "柳永法"
Next
Else
For Each oMatch in Matches
If oMatch.Value<>"" Then RetStr = RetStr & oMatch.Value & "柳永法"
Next
End If
getContents = Split(RetStr, "柳永法")
End Function
Function getHTTPPage(url)
On Error Resume Next
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
xmlhttp.Open "Get", url, False
xmlhttp.Send
If xmlhttp.Status<>200 Then Exit Function
GetBody = xmlhttp.ResponseBody
'柳永法(www.yongfa365.com)在此的思路是,先根據返回的字符串找,找文件頭,如果還沒有的話就用GB2312,一般都能直接匹配出編碼。
'在返回的字符串里看,雖然中文是亂碼,但不影響我們取其編碼,
GetCodePage = getContents("charset=[""']*([^"",']+)", xmlhttp.ResponseText , True)(0)
'在頭文件里看編碼
If Len(GetCodePage)<3 Then GetCodePage = getContents("charset=[""']*([^"",']+)", xmlhttp.getResponseHeader("Content-Type") , True)(0)
If Len(GetCodePage)<3 Then GetCodePage = "gb2312"
Set xmlhttp = Nothing
'下邊這句在正式使用時要屏蔽掉
WScript.Echo url & "-->" & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
End Function
Function BytesToBstr(Body, Cset)
On Error Resume Next
Dim objstream
Set objstream = CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.Write Body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
Set objstream = Nothing
End Function
vbs或asp采集文章時網頁編碼問題
2019-09-23 10:19asp開發網 ASP教程
研究網頁編碼很長時間了,因為最近要設計一個友情鏈接檢測的VBS腳本,而與你鏈接的人的頁面很可能是各種編碼
延伸 · 閱讀
- 2021-12-09禁用VBS提高Windows 11性能,這個技巧必須要掌握
- 2021-11-13使用VBS創建快捷方式的代碼
- 2021-11-13如何使用vbs 監控電腦活動記錄
- 2021-11-13如何用VBS腳本收集遠程計算機或本地計算機安裝
- 2021-10-20關于ASP網頁無法打開的解決方案
- 2021-10-14讓apache也支持asp環境的方法
精彩推薦
- ASP教程
asp 標記字符串中指定字符變色不區分大小寫
今天遇到這種問題,單純的使用replace函數不行,他會改變原有的字符串的大小寫,在網上找到相關的代碼,自己備份下...
- ASP教程
ASP.NET 數據源
數據源 一個 data sourse 控件與數據綁定的控件相互作用,并隱藏了復雜的數據的聯編過程。這些是提供數據給 data bound 控件的工具,并且支持如插入,刪除...
- ASP教程
asp Access數據備份,還原,壓縮類代碼
asp Access數據備份,還原,壓縮類實現代碼,大家可以參考下。...
- ASP教程
asp+javascript實現404頁的處理轉換
asp+javascript實現404頁的處理轉換...
- ASP教程
asp之基于adodb.stream的文件操作類
asp之基于adodb.stream的文件操作類...
- ASP教程
ASP常用函數:getpy()
ASP常用函數:getpy()...
- ASP教程
asp 采集實戰代碼
最近實在是太流行采集了,本人是不喜歡采集的,但對采集的原理我卻很有興趣進行研究,拿到了網上采集常用函數,對其進行了一番研究,并實戰,結果...
- ASP教程
JScript中遍歷Request表單參數集合的方法
這篇文章主要介紹了JScript中遍歷Request表單參數集合的方法,本文以遍歷Request.QueryString集合為例給出了實現代碼,需要的朋友可以參考下...