Html 使用chrome从网站中提取表格数据
我想用带有selenium的chrome浏览器从网站中提取表格数据。我写了下面的代码,但它不工作Html 使用chrome从网站中提取表格数据,html,excel,vba,selenium,web-scraping,Html,Excel,Vba,Selenium,Web Scraping,我想用带有selenium的chrome浏览器从网站中提取表格数据。我写了下面的代码,但它不工作 Sub Chartinka() Dim bot As New WebDriver, posts As WebElements, post As WebElement, i As Integer, mysheet As Worksheet, keys As Selenium.keys bot.Start "chrome", "https://chartink.com/screener/
Sub Chartinka()
Dim bot As New WebDriver, posts As WebElements, post As WebElement, i As Integer, mysheet As Worksheet, keys As Selenium.keys
bot.Start "chrome", "https://chartink.com/screener/buy-15m-78"
bot.Get "/"
Set posts = bot.FindElementsByXPath("//*[@id='DataTables_Table_0']/tbody/tr[1]")
i = 2
Set mysheet = Sheets("Sheet3")
For Each post In posts
' Run time Error '438' on the next line
mysheet.Cells(i, 1).Value = post.FindElementByTag("td")(0).text
mysheet.Cells(i, 2).Value = post.FindElementByTag("td")(1).text
mysheet.Cells(i, 3).Value = post.FindElementByTag("td")(2).text
mysheet.Cells(i, 4).Value = post.FindElementByTag("td")(3).text
mysheet.Cells(i, 5).Value = post.FindElementByTag("td")(4).text
mysheet.Cells(i, 6).Value = "BUY"
i = i + 1
Next
bot.Quit
End Sub
下面的脚本应该从该页面获取表格内容
Sub GetTabularcontent()
Const Url$ = "https://chartink.com/screener/buy-15m-78"
Dim driver As New ChromeDriver, tRow As Object
Dim tCel As Object, R&, C&
With driver
.get Url
For Each tRow In .FindElementsByCss("#DataTables_Table_0 tr", Timeout:=10000)
For Each tCel In tRow.FindElementsByCss("th,td")
C = C + 1: Cells(R + 1, C) = tCel.Text
Next tCel
C = 0: R = R + 1
Next tRow
End With
End Sub
下面的脚本应该从该页面获取表格内容
Sub GetTabularcontent()
Const Url$ = "https://chartink.com/screener/buy-15m-78"
Dim driver As New ChromeDriver, tRow As Object
Dim tCel As Object, R&, C&
With driver
.get Url
For Each tRow In .FindElementsByCss("#DataTables_Table_0 tr", Timeout:=10000)
For Each tCel In tRow.FindElementsByCss("th,td")
C = C + 1: Cells(R + 1, C) = tCel.Text
Next tCel
C = 0: R = R + 1
Next tRow
End With
End Sub
@使用这样的代码,您可以不使用循环
Sub GetTable()
Const sURL As String = "https://chartink.com/screener/buy-15m-78"
Dim bot As New ChromeDriver, tbl As Selenium.TableElement
With bot
.Get sURL
Set tbl = .FindElementById("DataTables_Table_0").AsTable
tbl.ToExcel ThisWorkbook.Sheets("Sheet1").Range("A1")
End With
End Sub
@使用这样的代码,您可以不使用循环
Sub GetTable()
Const sURL As String = "https://chartink.com/screener/buy-15m-78"
Dim bot As New ChromeDriver, tbl As Selenium.TableElement
With bot
.Get sURL
Set tbl = .FindElementById("DataTables_Table_0").AsTable
tbl.ToExcel ThisWorkbook.Sheets("Sheet1").Range("A1")
End With
End Sub
你有错误吗?如果是,哪一行的错误是什么?“它不工作”不是一个真正的问题。是的,在第9行。运行时错误“438”,这可能是因为没有名为
FindElementByTag
的函数-您可能需要findelemensbytagname
no-sir。同样的错误也会发生。那么,你的代码是从哪里来的呢?这里应该有一些例子。你有错误吗?如果是,哪一行的错误是什么?“它不工作”不是一个真正的问题。是的,在第9行。运行时错误“438”,这可能是因为没有名为FindElementByTag
的函数-您可能需要findelemensbytagname
no-sir。同样的错误也会发生。那么,你的代码是从哪里来的呢?这里应该有一些例子,没错。它起作用了。我不知道这个Selenium.TableElement
。没错。它起作用了。我不知道这个Selenium.TableElement
。