自己沒事搞了采集網站資料的小程式。試用程序中發現有不穩定的地方。而且幾率很大!
測驗出來是在將網站資料轉碼的程序中出現的問題,但是不知道是為什么。因為同一個網站有時候正常,有時候不正常!
采集如下網站里面招標資訊串列,然后獲取每一個招標資訊的url。
【http://cz.fjzfcg.gov.cn/n/webfjs/secpag.do?sid=200100001&zzxs=fzx&level=province】
因為是ajax,資料要從winhttp.open "get" 【http://cz.fjzfcg.gov.cn/n/webfjs/queryPageData.do?rows=20&sid=200100001&zzxs=fzx&level=province&page=頁碼 】獲得,
對獲取到的多條招標資訊網站get原始碼 并 進行回圈轉碼。。。
在轉碼的程序中就會偶爾出現問題,起扯訓以為是winhttp.status的問題,后來大量測驗發現問題是在 .write strBod 這一句,也就是說有幾率在將直接采集到的網頁資料 寫入 Objstream物件時,會一直停在這一步 出現問題。。造成后面的無法經行。。。
哪位大神有沒有什么見解啊?
================大概的程序如下=====================
.............................
1.先通過winhttp get主頁,通過一定正則匹配獲取該頁所有招標資訊的url及相關資訊
將獲取到的所有url 作為一個MatchCollection
回圈該MatchCollection
回圈體中 :winhttp.open "get" 每一個url
獲取的網頁資料winhttp.responsebody轉碼時會卡主 【偶爾,一共20個url,要么會正常回圈完。要么就卡住。任意一個url的時候都可能】
轉碼函式:
Public Function BytesToBstr(strBody, CodeBase)
Dim ObjStream
Set ObjStream = CreateObject("Adodb.Stream")
With ObjStream
.Type = 1
.Mode = 3
.open
'HeHe.StatusBar1.Panels(3).Text = HeHe.m & "TestStatusAAAAAAAAA"
.write strBod ' 會卡住的地方
'HeHe.StatusBar1.Panels(3).Text = HeHe.m & "TestStatusBBBBBBBBB"
.position = 0
.Type = 2
.Charset = CodeBase
BytesToBstr = .ReadText
.Close
End With
Set ObjStream = Nothing
End Function
uj5u.com熱心網友回復:
webbrowser好像更好用,有樹狀的內容結構,知道了網頁組織結構,轉到相應資料比較簡單轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/60971.html
標籤:資源
上一篇:VB上位機接收單片機的資料
下一篇:VB中在label中如何顯示橫線
