下面的代碼,數字加到70或100以上,獲取的原始碼為什么會變成空白?就是下面紅色S = oDoc.body.innerText的值為空,Text3也變成了空白,這是什么原因?求解決辦法?
我是想一直不停加下去,獲取歸屬地
Private Sub Form_Load()
Text1 = "19191111111"
End Sub
Private Sub Text3_Change()
Open "c:\2.txt" For Append As #3
Print #3, Text1 + Text2
Close #3
End Sub
Private Sub Command1_Click()
Timer1 = Enabled
Timer1.Interval = 100
End Sub
Private Sub Command2_Click()
Timer1 = False
End Sub
Private Sub Command3_Click()
Text1 = Text1 + 1
End Sub
Private Sub Command4_Click()
On Error Resume Next
Dim S As String
Set oDoc = CreateObject("htmlfile")
Set ms = CreateObject("MSScriptControl.ScriptControl")
ms.Language = "JScript"
With CreateObject("Microsoft.XMLHTTP")
.Open "GET", "https://www.baidu.com/s?wd=" & Text1, False
.setRequestHeader "If-Modified-Since", "Thu, 01 Jan 1970 00:00:00 GMT" '取時時最新資料'等于"0"也可以達到最新
.send
oDoc.body.innerHTML = .responseText
S = oDoc.body.innerText
End With
Open "c:\1.txt" For Output As #30
Print #30, S
Close #30
' Dim s As String
Text3 = S
Dim l As Long
l = InStr(S, "查詢") - InStr(S, Text1)
If InStr(S, Text1) > 0 And l > 0 Then
Text2 = Mid(S, InStr(S, Text1) + 36, l - 36)
End If
End Sub
Private Sub Timer1_Timer()
Command3_Click
Command4_Click
End Sub
uj5u.com熱心網友回復:
應該是HTTP請求報文頭不對的問題.需要抓包,模仿瀏覽器添加報文頭.
uj5u.com熱心網友回復:
要注意幾個問題:1、XMLHTTP 的 responseText 和 responseBody 還是有區別的,responseBody 才是最全的資料。
2、VB 的 String 型別只能裝 64k 以內的文本,超出的部分會被砍掉,要處理超出 64k 的文本,可以用位元組陣列自己處理
3、網頁的編碼也要注意,現在很多網站都不是gb2312編碼的,處理的時候需要轉換編碼
你可以參考我的這篇文章:
VB分析超過64K的網頁內容(基于XMLHTTP和位元組陣列處理)
uj5u.com熱心網友回復:
有些網站屏蔽了你采集。百度的話我了解的采集頻繁了絕對會給你ip受限,你試試不停按F5看看。 建議加上時間間隔,或者定期換ip轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/38706.html
標籤:網絡編程
上一篇:VB怎么截取兩個不同字串中的內容
