从网站提取数据时如何解决“ Windows安全警告”弹出问题

时间:2019-06-22 09:28:30

标签: vb.net web-scraping

我有一个应用程序,可以从网站提取数据并将其加载到服务器表中。当我一天中第一次运行该应用程序时,它会显示一个弹出窗口并询问是/否输入。当我想自动调度应用程序并在没有人工干预的情况下运行它时,如何克服此弹出窗口。

Public Sub Resolve_Date()

    Dim XMLReq As MSXML2.XMLHTTP60 = New MSXML2.XMLHTTP60
    Dim HTMLDoc = New mshtml.HTMLDocument
    'Dim htmlbody As HtmlDocument.body = New HTML
    Dim ObjXL As New Excel.Application
    Dim Table As mshtml.IHTMLElement
    Dim Tr As mshtml.IHTMLElement
    Dim Tc As mshtml.IHTMLElement
    Dim Trs As mshtml.IHTMLElementCollection
    Dim URL As String
    Dim x As Integer, y As Integer

    URL = "https://tt.wiki.com/search?category=&assigned_group=3p-asin"
    XMLReq.open("GET", URL, False) '--pop up is appearing here
    XMLReq.send()
    If XMLReq.status <> 200 Then

       msgBox("Error" & vbNewLine & XMLReq.status & " - " & XMLReq.statusText)
        Exit Sub

    End If

    Dim HTMLDoc1 As mshtml.IHTMLDocument = HTMLDoc

    HTMLDoc1.write("<html><body>test</body></html>")
    HTMLDoc1.close()
    HTMLDoc = HTMLDoc1
    HTMLDoc.body.innerHTML = XMLReq.responseText
    ''msgBox(HTMLDoc.body.innerHTML)
    'MsgBox(HTMLDoc.body.innerHTML)
    XMLReq = Nothing
    Table = HTMLDoc.getElementById("search_results")
    Trs = Table.getElementsByTagName("tr")


    For Each Tr In Trs
        --code to  insert data into Table
    Next Tr

1 个答案:

答案 0 :(得分:0)

如果我知道您在处理表的工作,我可以做更多...可能完全避免使用过时的MsHtml API(HTMLDocument和朋友)。但是就我们所拥有的上下文而言,这是一种重写,它至少使用了一些更现代的技术并大大简化了代码。

Public Sub Resolve_Date() 
    Dim URL As String = "https://tt.wiki.com/search?category=&assigned_group=3p-asin" 
    Dim results As String = ""

    Try
        Using wc As New WebClient()
            results = wc.DownloadString(URL)
        End Using
    Catch Ex As Exception
        MsgBox($"Error{vbNewLine}{Ex.Message}")
        Exit Sub
    End Try

    Dim HTMLDoc As New mshtml.HTMLDocument()
    HTMLDoc.Write(results);

    Dim Table As mshtml.IHTMLElement = HTMLDoc.getElementById("search_results")
    Dim Trs As mshtml.IHTMLElementCollection = Table.getElementsByTagName("tr")

    Dim ObjXL As New Excel.Application
    Dim x As Integer, y As Integer

    For Each Tr As mshtml.IHTMLElement In Trs
         ' code to  insert data into Table
    Next Tr
End Sub