Excel VBA Scrape网页

我正试图抓取以下网页

http://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?flag=0&expandable=7

搜索框(显示输入脚本名称/代码/ ID)是我遇到困难的地方,
我可以使用以下代码将框的值设置为脚本ID 500222,

IE.Document.All.Item(“ctl00 $ContentPlaceHolder1 $GetQuote1_smartSearch”).innerText =“500222”

但是,如果您尝试在搜索框中手动输入值500222,则会出现一个下拉框,该框将是相应脚本的名称.但是我不能通过VBA使它工作.任何帮助都会很棒.

在分配给文本框的网页.onkeypress事件处理函数发送HTTP请求,并在每次按键时接收响应.然后它会在下拉列表中显示建议的项目.您不需要弄清楚处理程序函数如何工作.只需打开您问题的网址e. G.在Chrome中,按F12打开“开发人员工具”窗口,转到“网络”选项卡,其中列出了所有页面XHR,在搜索框中键入一些文本,您将看到将显示新请求.单击其中一个,在“标题”选项卡中,您可以找到“请求URL”:

network tab

你可以像onkeypress事件处理程序一样重现这样的XHR,并从响应中解析Scrip Name,这里是示例VBA代码:

Option Explicit

Sub SmartGetQuoteData()

    Dim sScripID As String
    Dim sResp As String
    Dim sAllItems As String
    Dim sFirstCode As String
    Dim oXHR As Object
    Dim oDoc As Object
    Dim oBody As Object

    ' set your code here
    sScripID = "500222"

    ' make XHR
    Set oXHR = CreateObject("Microsoft.XMLHttp")
    oXHR.Open "GET", "http://www.bseindia.com/SiteCache/90D/SmartGetQuoteData.aspx?Type=EQ&text=" & sScripID, False
    oXHR.Send
    sResp = oXHR.ResponseText
    ' convert HTML to plain text
    Set oDoc = CreateObject("htmlfile")
    oDoc.Write sResp
    Set oBody = oDoc.GetElementsByTagName("body")(0)
    sAllItems = oBody.InnerText
    ' split response and get 1st part
    sFirstCode = Split(sAllItems, "|")(0)

    ' result output
    MsgBox sAllItems ' JCT ELECTRONICS LTD|JCTEL|500222
    MsgBox sFirstCode ' JCT ELECTRONICS LTD

End Sub

转载注明原文:Excel VBA Scrape网页 - 代码日志