使用excel宏从网站上的图形读取值
我有一个问题,我自己找不到解决办法。我试图从以下网站读取值:。我想我已经设法在网站的代码中找到了相应的部分 . 根据我的理解,这些值可以通过标记“span”或类“fg”找到,但它们似乎都不起作用。这是我在使用标记“span”的版本中使用的代码: 是否有人有想法,为什么这不起作用?这与图形上的值仅在您将鼠标悬停在图形的相应部分上方时才显示这一事实有关吗 谢谢你的帮助! 奥利弗 补充: 我想做的是: 读取excel工作表中标记“span”的所有值。每个值应在工作表中的连续单元格中写入,即A2、A3、 宏的作用是: 读取前4行标记“span”的值,然后传递11行没有值,然后再次显示元素“span”的网站剩余值。如果宏能够正常工作,我假设在11个空行中,图形的数字(这就是我需要的)会显示出来。我还将宣读结果的截图附在这篇文章上:使用excel宏从网站上的图形读取值,excel,vba,web-scraping,Excel,Vba,Web Scraping,我有一个问题,我自己找不到解决办法。我试图从以下网站读取值:。我想我已经设法在网站的代码中找到了相应的部分 . 根据我的理解,这些值可以通过标记“span”或类“fg”找到,但它们似乎都不起作用。这是我在使用标记“span”的版本中使用的代码: 是否有人有想法,为什么这不起作用?这与图形上的值仅在您将鼠标悬停在图形的相应部分上方时才显示这一事实有关吗 谢谢你的帮助! 奥利弗 补充: 我想做的是: 读取excel工作表中标记“span”的所有值。每个值应在工作表中的连续单元格中写入,即A2、A3、
从该页面下载之前需要等待 此外,最好针对特定跨度,例如
Dim values As webelements, labels As webelements, r As Long
Set values = chromebrowser.FindElementsByCss(".dontshow span")
Set labels = chromebrowser.FindElementsByCss(".series span")
r = 0
For i = 1 To labels.Count Step 2
Debug.Print labels.Item(i).Text
Debug.Print values(i).Text
Debug.Print values(i + 1).Text
r = r + 1
Next
但是,数据来自可以下载的csv。csv有一个时间戳参数,可以帮助缓存。我怀疑服务器在这方面做得不多@TimWilliams编写了一个非常好的小函数来生成unix时间戳,您可以使用它来构造csv下载url 因此,如果该页面上有其他您想要的内容,您可以访问构建的url,它将下载:
Public Sub GetCovidNumbers()
Dim downloadUrl As String
downloadUrl = "https://static.dwcdn.net/data/6E03v.csv?v=" & CStr(toUnix(Now))
Debug.Print downloadUrl
'd.get downloadUrl
End Sub
Public Function toUnix(dt) As Long
'https://stackoverflow.com/a/12326121 @TimWilliams
toUnix = DateDiff("s", "1/1/1970", dt)
End Function
或者,如果您只需要它,您可以设置一个下载路径并使用从构造的url下载,例如
Public Const folderName As String = "C:\Users\<user>\Desktop\covid.csv" '<=Change as required
Public Sub downloadCSV()
Dim ret As Long
ret = URLDownloadToFile(0, "https://static.dwcdn.net/data/6E03v.csv?v=" & CStr(toUnix(Now)), folderName, BINDF_GETNEWESTVERSION, 0)
End Sub
Public Const folderName As String=“C:\Users\\Desktop\covid.csv”““它们似乎都不工作”不是有用的错误描述。相反,描述出了什么地方出了问题,出现了哪些错误,代码实际执行了什么操作,或者代码预期执行了什么操作。此外,了解已经起作用的内容也很有用。WerteFG
是否包含任何元素?请注意,这个ChromeBrowser.FindElementsByTag(“span”)
将在整个html代码中找到所有span
元素。感谢您的回复,很抱歉在第一轮中不够精确,我们仍然需要学习如何在“程序员”社区中发布帖子。我知道我设计代码的方式会读出所有span元素。我只有有限的技能,没有太多的技能,所以设计很适合我。我在原来的帖子中添加了更多信息。非常感谢你的帮助!我非常喜欢下载CSV文件的过程,并将其实现到我的过程中,这正是我想要的方式。再次感谢!不客气
Public Const folderName As String = "C:\Users\<user>\Desktop\covid.csv" '<=Change as required
Public Sub downloadCSV()
Dim ret As Long
ret = URLDownloadToFile(0, "https://static.dwcdn.net/data/6E03v.csv?v=" & CStr(toUnix(Now)), folderName, BINDF_GETNEWESTVERSION, 0)
End Sub