Javascript 从网页中提取表格
我将在网页上提取类似“日期|开盘|高|低|收盘|股数|交易数|总营业额|可交付数量”的表格 以下是我的代码:Javascript 从网页中提取表格,javascript,html,excel,vba,web-scraping,Javascript,Html,Excel,Vba,Web Scraping,我将在网页上提取类似“日期|开盘|高|低|收盘|股数|交易数|总营业额|可交付数量”的表格 以下是我的代码: Sub Macro_BSE() Application.ScreenUpdating = False Dim FileName, Pathname As String MP = ActiveWorkbook.Name Workbooks.Add WB2 = ActiveWorkbook.Name Dim IE As New SHDocV
Sub Macro_BSE()
Application.ScreenUpdating = False
Dim FileName, Pathname As String
MP = ActiveWorkbook.Name
Workbooks.Add
WB2 = ActiveWorkbook.Name
Dim IE As New SHDocVw.internetexplorer
Const MAX_WAIT_SEC As Long = 5
Dim frm As Variant
Dim element, submitInput As Variant
Dim rowCollection, htmlRow As Variant
Dim rowSubContent, rowSubData As Variant
Dim anchorRange As Range, cellRng As Range
Dim start
Dim A As String
Dim hTable As HTMLTable
Dim clipboard As Object
IE.Visible = True
IE.navigate "https://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?expandable=7&scripcode=503100&flag=sp&Submit=G"
While IE.readyState <> 4: DoEvents: Wend
Application.Wait (Now + TimeValue("00:00:02"))
IE.document.querySelector("#ContentPlaceHolder1_rdbDaily").Click
IE.document.querySelector("[name='ctl00$ContentPlaceHolder1$txtFromDate']").Value = "28/11/2018"
IE.document.querySelector("[name='ctl00$ContentPlaceHolder1$txtToDate']").Value = "28/12/2018"
IE.document.querySelector("[name='ctl00$ContentPlaceHolder1$btnSubmit']").Click
Application.Wait (Now + TimeValue("00:00:10"))
T = Timer
Do
On Error Resume Next
Set hTable = IE.document.querySelector("#ContentPlaceHolder1_spnStkData table")
On Error GoTo 0
If Timer - T > MAX_WAIT_SEC Then Exit Do
Loop While hTable Is Nothing
If Not hTable Is Nothing Then
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
Workbooks(WB2).Worksheets("Sheet1").Range("A1").PasteSpecial
End If
End Sub
Sub宏_BSE()
Application.ScreenUpdating=False
Dim文件名,路径名为字符串
MP=ActiveWorkbook.Name
工作手册。添加
WB2=ActiveWorkbook.Name
Dim IE作为新的SHDocVw.internetexplorer
常量最大等待时间=5秒
Dim frm作为变型
Dim元素,作为变体的submitInput
Dim rowCollection,htmlRow作为变体
Dim ROWSUBCONNT,rowSubData作为变量
暗锚定范围为射程,蜂窝式范围为射程
暗启动
像线一样变暗
将hTable设置为HTMLTable
将剪贴板变暗为对象
可见=真实
即“导航”https://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?expandable=7&scripcode=503100&flag=sp&Submit=G"
而IE.readyState 4:DoEvents:Wend
Application.Wait(现在+时间值(“00:00:02”))
IE.document.querySelector(“#内容占位符1rdbdaily”)。单击
IE.document.querySelector(“[name='ctl00$ContentPlaceHolder1$txtFromDate']”)。Value=“28/11/2018”
IE.document.querySelector(“[name='ctl00$ContentPlaceHolder1$txtToDate']”)。Value=“28/12/2018”
IE.document.querySelector(“[name='ctl00$ContentPlaceholder 1$BTNSSubmit']”)。单击
Application.Wait(现在+时间值(“00:00:10”))
T=计时器
做
出错时继续下一步
Set hTable=IE.document.querySelector(“#contentplaceholder 1_spnStkData table”)
错误转到0
如果定时器-T>最大等待时间,则退出Do
循环,而hTable什么都不是
如果不是hTable,那就什么都不是了
剪贴板.SetText hTable.outerHTML
剪贴板.PutInClipboard
工作手册(WB2).工作表(“表1”).范围(“A1”).专用粘贴
如果结束
端接头
到目前为止,我无法提取该表。早些时候,我能够从相同的代码中提取
如果您从未创建剪贴板对象的实例,请建议进行更改。在尝试将文本放入之前,请执行此操作
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
clipboard.SetText hTable.outerHTML