【发布时间】:2020-10-14 23:24:28
【问题描述】:
我创建了一个脚本,它从网站表格中抓取数据并将其复制到 Excel 工作表中。基本上它执行以下操作
- 转到链接,
- 填写一个文本框并从下拉列表中选择一个值,按下一个按钮,
- 获取数据。 前两部分运行良好,但数据抓取不起作用。下面是我的代码
Private Sub CommandButton1_Click()
Sheets("Sheet1").Select
Range(Cells(7, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)).Delete
'Sheets("Sheet1").Range("A3") = "Symbol"
'Cells(3, 1).Font.Bold = True
Dim i As Long, strText As String
Dim doc As Object, hTable As Object, hBody As Object, hTR As Object, hTD As Object
Dim tb As Object, bb As Object, Tr As Object, Td As Object
Dim y As Long, z As Long, wb As Excel.Workbook, ws As Excel.Worksheet
'Shell "RunDll32.exe Inetcpl.cpl,ClearMyTracksByProcess 11"
Set wb = Excel.ActiveWorkbook
Set ws = wb.ActiveSheet
Set ie = CreateObject("InternetExplorer.Application")
my_url = "https://www1.nseindia.com/products/content/equities/equities/eq_security.htm"
With ie
.Visible = True
.navigate my_url
.Top = 50
.Left = 530
.Height = 400
.Width = 400
Do Until Not ie.busy And ie.readyState = 4
DoEvents
Loop
End With
' Input the userid and password
'ie.document.getElementById("symbol").Value = Worksheets("Sheet1").Range("B1")
ie.document.getElementById("symbol").Value = TextBox1.Text
ie.document.getElementById("dateRange").selectedIndex = "4"
ie.document.getElementById("get").Click
While ie.busy
DoEvents
Wend
Set doc = ie.document
Set hTable = doc.getElementsByTagName("table")
y = 2 'Column B in Excel
z = 3 'Row 3 in Excel
For Each tb In hTable
Set hHead = tb.getElementsByTagName("th")
For Each hh In hHead
Set hTR = hh.getElementsByTagName("tr")
For Each Tr In hTR
Set hTD = Tr.getElementsByTagName("th")
y = 1 ' Resets back to column A
For Each th In hTD
ws.Cells(z, y).Value = th.innerText
y = y + 1
Next th
DoEvents
z = z + 1
Next Tr
Exit For
Next hh
Exit For
Set hBody = tb.getElementsByTagName("tbody")
For Each bb In hBody
Set hTR = bb.getElementsByTagName("tr")
For Each Tr In hTR
Set hTD = Tr.getElementsByTagName("td")
y = 1 ' Resets back to column A
For Each Td In hTD
ws.Cells(z, y).Value = Td.innerText
y = y + 1
Next Td
DoEvents
z = z + 1
Next Tr
Exit For
Next bb
z = z + 1
Exit For
Next tb
End Sub
谁能帮帮我..!!
【问题讨论】:
-
“不工作”并不是一个真正有用的描述......你能更具体吗?
-
无法重现错误。这里的 textbox1.value 是什么 >> ie.document.getElementById("symbol").Value = TextBox1.Text
-
Textbox1 值是 excel 形式的文本框,值从该文本框输入到网站文本框。可以换成“BAJFINANCE”
-
什么不起作用?顺便说一句,您的第二次等待不是适当的等待。使用与第一次相同的等待格式,然后检查更长的等待时间是否有助于获得结果,如果这是未指定的问题。
标签: excel vba internet-explorer web-scraping