国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

excel爬蟲相關(guān)學(xué)習(xí)2:vba 爬蟲相關(guān)xmlhttp 前言:vba 爬蟲相關(guān)xmlhttp的方法

這篇具有很好參考價(jià)值的文章主要介紹了excel爬蟲相關(guān)學(xué)習(xí)2:vba 爬蟲相關(guān)xmlhttp 前言:vba 爬蟲相關(guān)xmlhttp的方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

前言:vba 爬蟲相關(guān)xmlhttp的方法

1 什么是xmlhttp

1.1 定義

1.2 特點(diǎn)

1.3 創(chuàng)建xmlhttp對(duì)象的過程

1.4? XMLHTTP對(duì)象創(chuàng)建的幾種方法:

2 XMLHTTP方法:

2.1 xmlhttp.open(Method, Url, Async, User,Password)

2.1.1 xmlhttp.open()方法

2.1.2?參數(shù)?

2.1.3 xmlhttp.open(get, url)

2.1.4 xmlhttp.open(post, url)

2.1.5 xmlhttp.open(put )

2.1.6 xmlhttp.open(propfind?)

2.2 XmlHttp.send(varBody)

2.3 setRequestHeader(bstrHeader, bstrValue)

2.4 abort

2.5 getAllResponseHeaders

2.6 getResponseHeader("header")

2.7 這個(gè)??XMLHttpRequest.open()

2.8 XMLHttpRequest.send(varBody)

2.9 response.write(objXML.responseText)

3 XMLHTTP屬性:

3.1 xmlhttp的屬性羅列

?3.1 xml.http.readyState

3.2 onreadystatechange

3.3 xml.http.status

3.4?xml.http.statusText

3.5?responseBody:

3.6 XmlHttp.responsetext 即是網(wǎng)頁內(nèi)容

3.7 responseStream: ? ?

3.8 responseXML: ? ? ?


前言:vba 爬蟲相關(guān)xmlhttp的方法

  • 除了EXCEL里直接用 來自網(wǎng)站可以爬數(shù)據(jù)
  • VBA也可以寫爬蟲代碼
  • 但是設(shè)計(jì) xmlhttp 相關(guān)的內(nèi)容

1 什么是xmlhttp

1.1 定義

  • XMLHTTP是個(gè)傳送XML格式數(shù)據(jù)的超文本傳輸協(xié)議。
  • XMLHTTP的數(shù)據(jù)傳輸過程更為靈活一些:
  • 下面是網(wǎng)上說靈活的地方
  • XMLHttpRequest可以提供不重新加載頁面的情況下更新網(wǎng)頁,在頁面加載后在客戶端向服務(wù)器請求數(shù)據(jù),在頁面加載后在服務(wù)器端接受數(shù)據(jù),在后臺(tái)向客戶端發(fā)送數(shù)據(jù)
  • 它上傳的指令可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。還可以是URL的參數(shù)。
  • 它下達(dá)的結(jié)果可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。

1.2 特點(diǎn)

  • 也是跨語言的
  • 現(xiàn)在所知的,vb,js

1.3 創(chuàng)建xmlhttp對(duì)象的過程

客戶端調(diào)用XMLHTTP的過程很簡單,只有5個(gè)步驟:?

  1. 創(chuàng)建XMLHTTP對(duì)象?
  2. 打開與服務(wù)端的連接,同時(shí)定義指令發(fā)送方式,服務(wù)網(wǎng)頁(URL)和請求權(quán)限等。?
  3. 客戶端通過Open命令打開與服務(wù)端的服務(wù)網(wǎng)頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務(wù)端的服務(wù)網(wǎng)頁。?
  4. 發(fā)送指令。?
  5. 等待并接收服務(wù)端返回的處理結(jié)果。?
  6. 釋放XMLHTTP對(duì)象?

創(chuàng)建xmlhtml對(duì)象過程的例子:見下面代碼


Sub t1()
  strUrl = "http://www.86pm25.com/paiming.htm"
  getHtmlStr (strUrl)
End Sub



Public Function getHtmlStr(strUrl)
    Dim XmlHttp
    Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
    XmlHttp.Open "GET", strUrl, True
    XmlHttp.send
    
    Content = XmlHttp.responsetext
    ThisWorkbook.Sheets("sheet5").Cells(1, 1) = Content
'    getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
'    Set XmlHttp = Nothing
End Function

運(yùn)行結(jié)果

excel爬蟲相關(guān)學(xué)習(xí)2:vba 爬蟲相關(guān)xmlhttp
前言:vba 爬蟲相關(guān)xmlhttp的方法

?

1.4? XMLHTTP對(duì)象創(chuàng)建的幾種方法:

VB相關(guān)的幾種對(duì)象創(chuàng)建方法

  • Msxml2.XMLHTTP是高版本,受msxml3.dll+支持 ??
  • Microsoft.XMLHTTP是低本,一般是msxml2.6以下版本使用
  • dim objxml? as object
  • Set objXML = CreateObject("Msxml2.XMLHTTP")?
  • Set objXML = CreateObject("MSXML2.XMLHTTP.6.0")
  • Set objXML = CreateObject("Microsoft.XMLHTTP")? ?

學(xué)習(xí)過程中,了解到創(chuàng)建xml對(duì)象有時(shí)候需要關(guān)注msxml的版本,比如安裝msxml4以上版本的xml解析器,比如有些人的代碼里寫法是

  • msxml2.serverxmlhttp.4.0
  • MSXML2.XMLHTTP.6.0

下面這些代碼先放這,以后看是不是用得著

Set http=Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")

http.setOption(2) = 13056? ?'忽略所有ssl錯(cuò)誤

Set objXmlHttp= Server.CreateObject("WinHttp.WinHttpRequest.5.1")

objXmlHttp.option(9) = 2720

2 XMLHTTP方法:

  • 百度百科上就有,學(xué)習(xí)一遍

Microsoft.XMLHTTP_百度百科含義Microsoft.XMLHttp組件的屬性方法https://baike.baidu.com/item/Microsoft.XMLHTTP/5265442?fr=aladdin

2.1 xmlhttp.open(Method, Url, Async, User,Password)

2.1.1 xmlhttp.open()方法

  • open? 創(chuàng)建一個(gè)新的http請求,并指定此請求的方法、URL以及驗(yàn)證信息(用戶名/密碼) 去打開指定網(wǎng)址
  • 語法
  • xmlhttp.open(Method, Url, Async, User,Password)
  • xmlhttp.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)
  • 調(diào)用open方法后,會(huì)將readyState修改為1。

2.1.2?參數(shù)?

bstrMethod

  • 例如:POST、GET、PUT及PROPFIND。
  • 大小寫不敏感?
  • xmlhttp.post? ? 用"POST"方式發(fā)送數(shù)據(jù),可以大到4MB,
  • xmlhttp.GET? ?只能256KB
  • xmlhttp.PUT
  • xmlhttp.PROPFIND

bstrUrl

  • 請求的URL地址
  • 可以為絕對(duì)地址也可以為相對(duì)地址。?

varAsync[可選]

  • varAsync: 是否同步執(zhí)行。
  • 布爾型,
  • 指定此請求是否為異步方式?
  1. 默認(rèn)/ 缺省為True,即異步執(zhí)行,
  2. 如果寫 False,同步執(zhí)行,只能在DOM中實(shí)施同步執(zhí)行。

bstrUser[可選]

  • 如果服務(wù)器需要驗(yàn)證,此處指定用戶名
  • 如果未指定,當(dāng)服務(wù)器需要驗(yàn)證時(shí),會(huì)彈出驗(yàn)證窗口。?

bstrPassword[可選]

  • 驗(yàn)證信息中的密碼部分,
  • 如果用戶名為空,則此值將被忽略。?

2.1.3 xmlhttp.open(get, url)

  • xmlhttp.open()
  • 打開網(wǎng)頁,取得信息

? ? Dim XmlHttp
? ? Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
? ? XmlHttp.Open "GET", strUrl, True
? ? XmlHttp.send

2.1.4 xmlhttp.open(post, url)

  • 如果Open方法定義為POST,可以定義表單方式上傳
  • 還可以發(fā)送用戶名,密碼!
  • 上傳信息是這樣
  • XMLHTTP.setRequestHeader
  • XMLHTTP.send

Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")

XMLHTTP.Open "POST", StrUrl, True

XMLHTTP.setRequestHeader "Content-Length", Len(PostData)

XMLHTTP.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"

XMLHTTP.send (StrData)?

set oxh=createobject("Microsoft.XMLHTTP")
postdata="username=abc&password=123"
oxh.Open "post",url,false
oxh.setRequestHeader "Content-Length",len(postdata)
oxh.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
oxh.send postdata? ? 'send用戶名密碼

Sub t2()
    Dim xmlhttp
    strUrl = "http://www.86pm25.com/paiming.htm"
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    xmlhttp.Open "POST", strUrl, True
    xmlhttp.setRequestHeader "Content-Length", Len(postdata)
    xmlhttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
    xmlhttp.send (StrData)
    
    Content = xmlhttp.responsetext
    ThisWorkbook.Sheets("sheet5").Cells(1, 2) = Content
    Set xmlhttp = Nothing

End Sub


Sub t3()
    Dim xmlhttp
    strUrl = "http://www.86pm25.com/paiming.htm"
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    postdata = "username=abc&password=123"
    xmlhttp.Open "post", Url, False
    xmlhttp.setRequestHeader "Content-Length", Len(postdata)
    xmlhttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
    xmlhttp.send postdata 'send用戶名密碼

    Content = xmlhttp.responsetext
    ThisWorkbook.Sheets("sheet5").Cells(1, 2) = Content
    Set xmlhttp = Nothing

End Sub

2.1.5 xmlhttp.open(put )

  • ?PUT創(chuàng)建或替換資源。因此,Content-Type頭字段應(yīng)該包含您要發(fā)送的表示的內(nèi)容類型

var string = encodeURIComponent("Text String!")
var req = new XMLHttpRequest()
req.open("PUT", "example/data.txt", false)
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
req.setRequestHeader("Content-length", string.length)
req.setRequestHeader("Connection", "close")
req.send(string)

2.1.6 xmlhttp.open(propfind?)

很少見

2.2 XmlHttp.send(varBody)

  • varBody:指令集。
  • 可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。
  • 也可以省略,讓指令通過Open方法的URL參數(shù)代入。
  • 發(fā)送數(shù)據(jù)的方式分為同步和異步兩種。
  • 在異步方式下,數(shù)據(jù)包一旦發(fā)送完畢,就結(jié)束Send進(jìn)程,客戶機(jī)執(zhí)行其他的操作;
  • 而在同步方式下,客戶機(jī)要等到服務(wù)器返回確認(rèn)消息后才結(jié)束Send進(jìn)程。

2.3 setRequestHeader(bstrHeader, bstrValue)

  • bstrHeader:HTTP 頭(header)?
  • bstrValue:HTTP 頭(header)的值

可以配合? open(post ) 使用

如果Open方法定義為POST,可以定義表單方式上傳:?

xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"?

2.4 abort

  • 取消/停止 當(dāng)前 HTTP 請求
  • 如果XMlHttp對(duì)象被用過后readyState狀態(tài)一直是4,所以就不在觸發(fā)OnReadyStateChange事件了,因此responseText只能顯示一次,以后就無法工作了,
  • 需要在后面加上 XMlHttp對(duì)象.abort一切搞定

2.5 getAllResponseHeaders

  • 從響應(yīng)信息中檢索所有的標(biāo)頭字段

2.6 getResponseHeader("header")

2.7 這個(gè)??XMLHttpRequest.open()

  • XMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);?
  • 不同于xmlhttp.open()方法

2.8 XMLHttpRequest.send(varBody)

send? 發(fā)送請求到http服務(wù)器并接收回應(yīng)?
??????? XMLHttpRequest.send(varBody);?
????????參數(shù)?
??????????? varBody 欲通過此請求發(fā)送的數(shù)據(jù)。?
??????? 調(diào)用send方法后,會(huì)先調(diào)用onreadystatechange方法,此時(shí)readyState狀態(tài)為1,然后會(huì)已經(jīng)進(jìn)程將readyState修改為2、3、4?
??????? 一般情況下,使用Ajax提交或者獲取參數(shù)可以采用GET、POST方式,使用GET方法將要提交的參數(shù)寫到open方法的url參數(shù)中,此時(shí)send方法的參數(shù)為null。?
??????? 例如 :?
  ????????? var url = "login.jsp?user=XXX&pwd=XXX";?
  ????????? xmlHttpRequest.open("GET",url,true);?
  ????????? xmlHttpRequset.send();?
  ??? 此外,也可以使用send方法傳遞參數(shù)。使用send方法傳遞參數(shù)使用的是POST方法,需要設(shè)定Content-Type頭信息,模擬HTTP POST方法發(fā)送一個(gè)表單,這樣服務(wù)器才會(huì)知道如何處理上傳的內(nèi)容。參數(shù)的提交格式和GET方法中url的寫法一樣。設(shè)置頭信息前必須先調(diào)用open方法。?
  ??? 例如:?
  ????????? xmlHttpRequest.open("POST","login.jsp",true);?
  ????????? xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");?
  ????????? xmlHttpRequest.send("user="+username+"&pwd="+password);?
  ??? 需要注意的是根據(jù)提交方式的不同,兩種提交方式分別調(diào)用后臺(tái)的doGet方法和doPost方法。?

2.9 response.write(objXML.responseText)

3 XMLHTTP屬性:

  • 搜到的屬性如下

Microsoft.XMLHTTP_百度百科含義Microsoft.XMLHttp組件的屬性方法https://baike.baidu.com/item/Microsoft.XMLHTTP/5265442?fr=aladdin

3.1 xmlhttp的屬性羅列

返回狀態(tài)

  • status:? ? ? ? ? ? ? ? ? ? ? ?Long型 服務(wù)器返回的HTTP狀態(tài)碼
  • statusText :? ? ? ? ? ? ? ?String型 服務(wù)器HTTP響應(yīng)行狀態(tài)?

狀態(tài)碼等

  • xml.http.readyState
  • onreadystatechange:在同步執(zhí)行方式下獲得返回結(jié)果的事件句柄。只能在DOM中調(diào)用。

返回內(nèi)容

  • 除了 responseText 結(jié)果返回為字符串。其他不能直接打出來吧,其他格式取出!
  • 分別用什么方法取出呢?
  • responseBody:? ? ? ? ?結(jié)果返回為無符號(hào)整數(shù)數(shù)組。
  • responseStream: ? ? ?結(jié)果返回為IStream流。
  • responseText :? ? ? ? ? 結(jié)果返回為字符串。
  • responseXML:? ? ? ? ? 結(jié)果返回為XML格式數(shù)據(jù)。

?3.1 xml.http.readyState

  • XMLHTTP對(duì)象中的readyState屬性能夠反映出服務(wù)器在處理請求時(shí)的進(jìn)展?fàn)顩r。
  • 客戶機(jī)的程序可以根據(jù)這個(gè)狀態(tài)信息設(shè)置相應(yīng)的事件處理方法。?
  • status長整形,此屬性只讀,返回當(dāng)前請求的http狀態(tài)碼,此屬性僅當(dāng)數(shù)據(jù)發(fā)送并接收完畢后才可獲取。?
  • readyState用來記錄當(dāng)前請求的狀態(tài),只讀。?
  • 0(未初始化) Response對(duì)象已創(chuàng)建,但是尚未初始化,XML文檔上載過程尚未結(jié)束(尚未調(diào)用open方法)?
  • 1(初始化)???? XML文檔已經(jīng)裝載完畢, 對(duì)象已初始化(調(diào)用了open方法,尚未調(diào)用send方法?)
  • 2(發(fā)送數(shù)據(jù))?? XML文檔已經(jīng)裝載完畢,正在處理中. (send方法已調(diào)用,但是當(dāng)前的狀態(tài)及http頭未知)
  • 3(數(shù)據(jù)傳送中)?部分XML文檔已經(jīng)解析, 已接收部分?jǐn)?shù)據(jù),因?yàn)轫憫?yīng)及http頭不全,這時(shí)通過responseBody和responseText獲取部分?jǐn)?shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤?
  • ?4(完成)?????? 文檔已經(jīng)解析完畢,數(shù)據(jù)接收完畢,客戶端可以接受返回消息,此時(shí)可以通過通過responseBody和responseText獲取完整的回應(yīng)數(shù)據(jù)?
Set xmlobject = CreateObject("Microsoft.XMLHTTP")
xmlobject.Open "GET", strURL, False
xmlobject.Send
If xmlobject.readyState = 4 Then
strHTML = xmlobject.Responsetext
End If

3.2 onreadystatechange

  • 當(dāng)readyState發(fā)生改變時(shí),調(diào)用onreadystatechange方法,onreadystatechange需要自己定義。?
  • 在同步執(zhí)行方式下獲得返回結(jié)果的事件句柄。只能在DOM中調(diào)用。

3.3 xml.http.status

3.4?xml.http.statusText

3.5?responseBody:

  • ResponseBody是二進(jìn)制的數(shù)據(jù),是服務(wù)器傳來的沒有經(jīng)過任何加工的數(shù)據(jù)。

3.6 XmlHttp.responsetext 即是網(wǎng)頁內(nèi)容

????responseText?將響應(yīng)信息作為字符串返回.只讀?

2 ResponseText是按照utf-8編碼把ResponseBody轉(zhuǎn)換而成,也就是:ResponseText=ByteToStr(ResponseBody,"UTF-8")



Sub t1()
  strUrl = "http://www.86pm25.com/paiming.htm"
  getHtmlStr (strUrl)
End Sub



Public Function getHtmlStr(strUrl)
    Dim XmlHttp
    Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
    XmlHttp.Open "GET", strUrl, True
    XmlHttp.send
    
    r1 = XmlHttp.responsetext
'    r2 = XmlHttp.responsexml
'    r3 = XmlHttp.responsebody
'    r4 = XmlHttp.responsestream

    ThisWorkbook.Sheets("sheet5").Cells(1, 1) = r1
'    ThisWorkbook.Sheets("sheet5").Cells(1, 2) = r2
'    ThisWorkbook.Sheets("sheet5").Cells(1, 3) = r3
'    ThisWorkbook.Sheets("sheet5").Cells(1, 4) = r4
    
'    getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
'    Set XmlHttp = Nothing
End Function






'''Function getHtmlStr(strUrl)
'''    Dim XmlHttp
'''    Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
'''    XmlHttp.Open "GET", strUrl, True
'''
''''    If XmlHttpRequest.status_code = 200 Then
'''
'''        XmlHttp.send
'''
'''    '    Content = XmlHttp.responsetext
'''    '    arr1 = Split(Content, "<Holding>") 'You cannot dim arr1() at the beginning
'''    '    arr2 = Split(arr1(1), "</Holding>")
'''    '    Sheet3.Cells(i, 5) = arr2(0)
'''
'''
'''
'''        ThisWorkbook.Sheets("sheet5").Cells(1, 1) = Content
'''        getHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode)
'''        Set XmlHttp = Nothing
'''
''''    End If
'''End Function

excel爬蟲相關(guān)學(xué)習(xí)2:vba 爬蟲相關(guān)xmlhttp
前言:vba 爬蟲相關(guān)xmlhttp的方法

必須繞一手?

? ? r1 = XmlHttp.responsetext

? ? ThisWorkbook.Sheets("sheet5").Cells(1, 1) = r1

這樣就不行?

? ? ThisWorkbook.Sheets("sheet5").Cells(1, 1) =XmlHttp.responsetext

3.7 responseStream: ? ?

● responseStream:結(jié)果返回為IStream流 對(duì)象。

3.8 responseXML: ? ? ?

  • responseXML??將響應(yīng)信息格式化為Xml Document對(duì)象并返回,只讀?

超時(shí)問題如何


下面的xml文件是動(dòng)態(tài)生成的最后用xmlHTTP傳送出去,這是一個(gè)在客戶端JavaScript腳本里的內(nèi)容,當(dāng)然你也可以寫在服務(wù)器,但是要相應(yīng)的改一些東西:(僅供大家參考,了解它的用法)
var xmlDoc=new ActiveXObject("MSXML2.DOMDocument");
flag=xmlDoc.loadXML("");

newNode =xmlDoc.createElement("編碼")
MarkNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartMark")
newNode.text=StartMark;
MarkNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndMark")
newNode.text=EndMark;
MarkNode.appendChild(newNode)

newNode =xmlDoc.createElement("日期")
DateNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartDate");
newNode.text=StartDate;
DateNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndDate")
newNode.text=EndDate;
DateNode.appendChild(newNode);

newNode =xmlDoc.createElement("數(shù)量")
SLNode =xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartSL")
newNode.text=StartShuL
SLNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndSL");
newNode.text=EndShuL
SLNode.appendChild(newNode);

newNode =xmlDoc.createElement("單價(jià)")
DJNode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartDJ")
newNode.text=StartDanJ;
DJNode.appendChild(newNode);
newNode =xmlDoc.createElement("EndDJ")
newNode.text=EndDanJ;
DJNode.appendChild(newNode);

newNode =xmlDoc.createElement("金額")
JENode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartJE")
newNode.text=StartJinE
JENode.appendChild(newNode)
newNode =xmlDoc.createElement("EndJE")
newNode.text=EndJinE
JENode.appendChild(newNode)

newNode =xmlDoc.createElement("倉庫代碼")
newNode.text=CK;
xmlDoc.documentElement.appendChild(newNode)

newNode =xmlDoc.createElement("票號(hào)")
newNode.text=RKPH;
xmlDoc.documentElement.appendChild(newNode)

newNode =xmlDoc.createElement("單位代碼")
newNode.text=CorpName;
xmlDoc.documentElement.appendChild(newNode)

newNode =xmlDoc.createElement("BiaoShi")
newNode.text=Biaoshi
xmlDoc.documentElement.appendChild(newNode)

newNode =xmlDoc.createElement("FindCate")
newNode.text=FindCate
xmlDoc.documentElement.appendChild(newNode)

var xh =new ActiveXObject("MSXML2.XMLHTTP")
xh.open("POST","Find.asp",false)
xh.setRequestHeader("Content-Type","text/xml")
xh.setRequestHeader("Content-Type","gb2312")
xh.send(xmlDoc);
我的每一個(gè)newNode的text值是一個(gè)變量,也就是我客戶端form 中input的值

-------------------------------------------------------------------


ASP小偷程序如何利用XMLHTTP實(shí)現(xiàn)表單的提交
利用XMLHTTP來制作小偷的具體細(xì)節(jié)落伍很多人都發(fā)過和討論過了,但是在制作ASP小偷的過程中,很多人就發(fā)現(xiàn)ASP小偷不如PHP小偷的那么強(qiáng)

大了。確實(shí),如果在原網(wǎng)站如果存在表單提交或cookies的驗(yàn)證,對(duì)于ASP來說,不使用基于SOCKET的組件就難以完成,其實(shí),XMLHTTP的另外兩

個(gè)方法被我們忽略了,而這正是問題的關(guān)鍵。
下面首先來說說這個(gè)方法
1。.send()
由于流行的小偷是使用的GET而不是POST來傳送數(shù)據(jù),所以很多人忽略了這個(gè)方法,而使用SEND發(fā)送數(shù)據(jù)也很簡單,就是SEND("內(nèi)容"),可是,

發(fā)送表單就不是這么簡單,因?yàn)槟惆l(fā)送的表單如果是中文的話,就要牽扯到編碼的問題了。
首先,你在OPEN 時(shí)要確定是用POST 即 .open("POST",地址,是否異步)
然后,在SEND里面加上你表單的內(nèi)容,比如說,你要提交的表單有3個(gè)表單域,分別是A,B,C,對(duì)應(yīng)的值分別是1,2,3,那么,你在SEND里這

樣寫就可以提交表單了,.send("A=1&B=2&C=3"),怎么樣,很簡單吧,是不是沒想到呢?但是別高興的太早了,我前面說到了,如果表單的值是

中文的話,數(shù)據(jù)傳輸?shù)木蜁?huì)出錯(cuò)了。這里我們借助一個(gè)函數(shù)escape(),熟悉JAVASCRIPT的朋友都應(yīng)該知道這個(gè)函數(shù)的作用了,現(xiàn)在VBSCRIPT同樣支持這個(gè)函數(shù)。.send("A=escape('值1')&B=escape('值2')&C=escape('值3')")
2。.setRequestHeader()
接著上面的所說,你的數(shù)據(jù)send出去了,對(duì)方卻不會(huì)接收到,為什么了,其實(shí),那是因?yàn)槟愕腍TTP頭少了一個(gè)東西,然后用這個(gè)函數(shù)把加上去就可以了,具體就是.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"), 告訴對(duì)方你是提交了一個(gè)urlencode編碼的表單。

好的,說完了表單的提交來說怎么傳送cookies和session


其實(shí)傳送cookies也很簡單了,同樣利用這個(gè)函數(shù)在HTTP頭里添加?xùn)|西,比如,我當(dāng)前在落伍的cookies是
cdb_sid=ybBiK0; cdb_cookietime=315360000; cdb_oldtopics=D869008D; cdb_visitedfid=1D45; cdb_auth=AQYHXVFDGERdsggVQA1VYUgxQDwFVV1dUAlwFAFRXVwU%2FbAIJB1lUCg; cdb_fid45=1113370145
現(xiàn)在我要發(fā)送這個(gè)cookies就直接是.setRequestHeader("Cookie","cdb_sid=ybBiK0; cdb_cookietime=315360000; cdb_oldtopics=D869008D; cdb_visitedfid=1D45; cdb_auth=AQYHXVFDGERdsggVQA1VYUgxQDwFVV1dUAlwFAFRXVwU%2FbAIJB1lUCg; cdb_fid45=1113370145")
當(dāng)然,有些網(wǎng)站頁面有頁面判斷功能,這個(gè)也不難,就是.setRequestHeader("Referer","來路的絕對(duì)地址")
這里還有個(gè)重要問題,就是這個(gè)方法由于是寫HTTP頭的,所以不能更改現(xiàn)有的HTTP頭,對(duì)于怎么用asp獲取對(duì)方頁面的cookies或session并且發(fā)出去.


?文章來源地址http://www.zghlxwxcb.cn/news/detail-500372.html

到了這里,關(guān)于excel爬蟲相關(guān)學(xué)習(xí)2:vba 爬蟲相關(guān)xmlhttp 前言:vba 爬蟲相關(guān)xmlhttp的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《Git入門實(shí)踐教程》前言+目錄

    版本控制系統(tǒng)(VCS)在項(xiàng)目開發(fā)中異常重要,但和在校大學(xué)生的交流中知道,這個(gè)重要方向并未受到重視。具備這一技能,既是項(xiàng)目開發(fā)能力的體現(xiàn),也可為各種面試加碼。在學(xué)習(xí)體驗(yàn)后知道,Git多樣化平臺(tái)、多種操作方式、豐富的資源為業(yè)內(nèi)人士提供了方便的同時(shí),也造成

    2024年02月10日
    瀏覽(95)
  • WebGL前言——WebGL相關(guān)介紹

    WebGL前言——WebGL相關(guān)介紹

    第一講內(nèi)容主要介紹WebGL技術(shù)和相應(yīng)的硬件基礎(chǔ)部分,在初級(jí)課程和中級(jí)課程的基礎(chǔ)上,將技術(shù)和硬件基礎(chǔ)進(jìn)行串聯(lián),能夠?qū)ebGL從產(chǎn)生到消亡有深刻全面的理解。同時(shí)還介紹WebGL大家在初級(jí)課程和中級(jí)課程中的一些常見錯(cuò)誤以及錯(cuò)誤調(diào)試的辦法。 先熱身一下吧,看個(gè)問題:如

    2023年04月08日
    瀏覽(27)
  • EXCEL VBA從入門到精通 第九章:Excel VBA高級(jí)編程技巧

    介紹Excel VBA中的API編程,以及如何利用它們來訪問Windows系統(tǒng)的功能。 Excel VBA提供了訪問Windows系統(tǒng)API的功能,通過調(diào)用API函數(shù)可以訪問Windows系統(tǒng)底層的功能和資源,例如操作系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)、注冊表等。API函數(shù)可以是Windows操作系統(tǒng)內(nèi)置的函數(shù),也可以是Windows DLL文件中

    2024年02月02日
    瀏覽(25)
  • 【PB續(xù)命01】Microsoft.XMLHttp的屬性和方法的簡介及使用

    Microsoft.XMLHttp組件的屬性方法 1、創(chuàng)建XMLHTTP對(duì)象 //需MSXML4.0支持 2、打開與服務(wù)端的連接,同時(shí)定義指令發(fā)送方式,服務(wù)網(wǎng)頁(URL)和請求權(quán)限等??蛻舳送ㄟ^Open命令打開與服務(wù)端的服務(wù)網(wǎng)頁的連接。與普通HTTP指令傳送一樣,可以用\\\"GET\\\"方法或\\\"POST\\\"方法指向服務(wù)端的服務(wù)網(wǎng)頁。

    2024年02月06日
    瀏覽(47)
  • EXCEL VBA從入門到精通 第一章:VBA入門

    介紹VBA的定義,作用和優(yōu)點(diǎn)。 VBA(Visual Basic for Applications)是一種編程語言,是微軟Office套件中的一個(gè)重要組成部分,主要用于自動(dòng)化處理Office中的各種操作,包括Excel、Word、PowerPoint、Outlook等。 VBA是一種基于VB(Visual Basic)語言的編程語言,它具有簡單易學(xué)、功能強(qiáng)大、靈

    2024年02月07日
    瀏覽(28)
  • 掌握 Microsoft Excel 宏和 Excel VBA

    掌握 Microsoft Excel 宏和 Excel VBA

    掌握 Microsoft Excel 宏和 Excel VBA 基于項(xiàng)目的 Excel VBA(Visual Basic for Applications)和 Excel 宏課程 課程英文名:Master Microsoft Excel Macros and Excel VBA 此視頻教程共27.0小時(shí),中英雙語字幕,畫質(zhì)清晰無水印,源碼附件全 課程編號(hào):286 百度網(wǎng)盤地址:https://pan.baidu.com/s/1ivLIGKt_3R0wncmCswMTR

    2024年02月05日
    瀏覽(22)
  • Excel VBA 語法基礎(chǔ)

    VBA(Visual Basic for Applications)是一種用于宏編程和自動(dòng)化任務(wù)的編程語言,廣泛應(yīng)用于 Microsoft Office 套件中的各種應(yīng)用程序,如 Excel、Word 和 PowerPoint。掌握 VBA 基礎(chǔ)語法可以幫助您通過編寫自定義的宏來增強(qiáng)和自動(dòng)化這些應(yīng)用程序的功能。 本文將介紹 Excel VBA 的基礎(chǔ)語法,幫

    2024年02月09日
    瀏覽(26)
  • Excel+VBA幫助

    ?目錄 一、VBA 入門知識(shí) 1、激活工作簿 2、創(chuàng)建新工作簿 3、打開工作簿 4、用編號(hào)引用工作表 5、用名稱引用工作表 6、將文檔保存為 Web 頁 7、用 A1 樣式的記號(hào)引用單元格和單元格區(qū)域 8、用編號(hào)引用單元格 9、引用行或列 10、用快捷記號(hào)引用單元格 11、引用命名單元格區(qū)域

    2024年02月05日
    瀏覽(18)
  • 【一】Excel VBA開發(fā) 初探

    【一】Excel VBA開發(fā) 初探

    1、點(diǎn)擊Excel左上角的【文件】,然后點(diǎn)擊文件下方的【選項(xiàng)】 2、【Excel選項(xiàng)】中點(diǎn)擊【自定義功能區(qū)】,右邊勾選【開發(fā)工具】,點(diǎn)擊【確定】 ?3、返回excel sheet 頁面。點(diǎn)擊【開發(fā)工具】,我們將看到三個(gè)我們開發(fā)過程中必用的按鈕,分別是:【Visual Basic】、【宏】、【錄制

    2024年02月11日
    瀏覽(23)
  • VBA技術(shù)資料MF36:VBA_在Excel中排序

    VBA技術(shù)資料MF36:VBA_在Excel中排序

    【分享成果,隨喜正能量】一個(gè)人的氣質(zhì),并不在容顏和身材,而是所經(jīng)歷過的往事,是內(nèi)在留下的印跡,令人深沉而安謐。所以,優(yōu)雅是一種閱歷的凝聚;淡然是一段人生的沉淀。時(shí)間會(huì)讓一顆靈魂,變得越來越動(dòng)人。控制自己的脾氣,做一個(gè)有修養(yǎng)的人。。 我給VBA的定義

    2024年02月15日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包