簡體   English   中英

無法在 ServerXMLHTTP 請求中設置自定義超時

[英]Unable to set customized timeout within ServerXMLHTTP request

我在 vba 中編寫了一個腳本,用於在發出代理請求后從網站上抓取第一篇文章。 我在我的 vba 腳本中發出 http 請求時使用了代理(不在代理列表中),以查看總帖子的長度。 成功發送請求后,腳本應解析第一個帖子和正在使用的代理並退出循環。

有時腳本以正確的方式工作,但大多數情況下,即使我在發送請求之前定義了timeout ,腳本也需要很長時間才能完成操作。 在這一點上,我非常懷疑我是否可以以正確的方式填寫timeout參數。 我期望的是腳本將等待任何響應的時間,否則它會拋出timeout錯誤並進行下一個請求。

到目前為止我已經寫過:

Sub HandleTimeOut()
    Dim Http As New ServerXMLHTTP60, Html As New HTMLDocument
    Dim elem As Object, proxyList As Variant, oProxy As Variant

    proxyList = [{"50.246.120.125:8080","198.204.253.115:3128","98.172.142.99:8080","207.188.231.141:8080"}]

    For Each oProxy In proxyList
        With Http
            .Open "GET", "https://stackoverflow.com/questions/tagged/web-scraping", True
            .setRequestHeader "User-Agent", "Mozilla/5.0"
            .setProxy 2, oProxy
            .setTimeouts 600000, 600000, 15000, 15000
            On Error Resume Next
            .send
            While .readyState < 4: DoEvents: Wend
            Html.body.innerHTML = .responseText
            Set elem = Html.querySelectorAll(".summary .question-hyperlink")
            On Error GoTo 0
        End With

        If elem.Length > 0 Then
            [A1] = oProxy
            [B1] = elem(0).innerText
            Exit For
        End If
    Next oProxy
End Sub

timeout設置為五秒的正確方法是什么?

.Open "GET", "https://stackoverflow.com/questions/tagged/web-scraping", True

應該

.Open "GET", "https://stackoverflow.com/questions/tagged/web-scraping", False

如何使用asp設置http超時?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM