Excel 从网页上刮取表格

Excel 从网页上刮取表格,excel,vba,web-scraping,Excel,Vba,Web Scraping,我正试图从网页上刮下一张桌子。下面的代码到达 Set hTable=html.querySelector行,但hTable结果为空 有人能建议如何正确识别页面上的值表吗 $$全部 因为页面上有很多动态元素,所以无法使用MSXML2.XMLHTTP从该页面读取任何数据。唯一的方法是使用IE或Selenium。可以处理JavaScript的环境 保存生成的HTML文档,然后打开它,自己查看: Public Sub GetSomeData() Const URL As String = "htt

我正试图从网页上刮下一张桌子。下面的代码到达
Set hTable=html.querySelector
行,但
hTable
结果为空

有人能建议如何正确识别页面上的值表吗

$$全部



因为页面上有很多动态元素,所以无法使用MSXML2.XMLHTTP从该页面读取任何数据。唯一的方法是使用IE或Selenium。可以处理JavaScript的环境

保存生成的HTML文档,然后打开它,自己查看:

Public Sub GetSomeData()
  Const URL As String = "https://www.morningstar.co.uk/uk/screener/fund.aspx#?filtersSelectedValue=%7B%22analystRatingScale%22:%7B%22id%22:%225%22%7D,%22starRating%22:%7B%22id%22:%225%22%7D%7D&page=1&perPage=10&sortField=legalName&sortOrder=asc&universeId=FOCAN$$ALL"
  Dim html As htmlDocument, hTable As HTMLTable, ws As Worksheet, headers()
  Dim td As Object, tr As Object, r As Long, c As Long

  headers = Array("Tick", "Fund", "1 Day", "1 Week", "1 Month", "3 Months", "6 Months")
  Set ws = ThisWorkbook.Worksheets("Sheet1")
  Set html = New htmlDocument
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", URL, False
    .send
    html.body.innerHTML = .responseText
  End With

  '-----
  Open "E:\MorningStar.htm" For Output As #1 'Use your own path
  Print #1, html.body.outerHTML
  Close
  '-----
End Sub

嗨,这只检索了表外的html,因此没有数据。带回数据需要做哪些更改?你读过我写的吗?您需要一个能够处理动态内容的环境来生成表。IE或Selenium。对不起,我误解了您在代码上面的评论。我可以将IE设置为浏览器,并让它打开页面(我想这就是你的意思)?我要试一试。
Public Sub GetSomeData()
  Const URL As String = "https://www.morningstar.co.uk/uk/screener/fund.aspx#?filtersSelectedValue=%7B%22analystRatingScale%22:%7B%22id%22:%225%22%7D,%22starRating%22:%7B%22id%22:%225%22%7D%7D&page=1&perPage=10&sortField=legalName&sortOrder=asc&universeId=FOCAN$$ALL"
  Dim html As htmlDocument, hTable As HTMLTable, ws As Worksheet, headers()
  Dim td As Object, tr As Object, r As Long, c As Long

  headers = Array("Tick", "Fund", "1 Day", "1 Week", "1 Month", "3 Months", "6 Months")
  Set ws = ThisWorkbook.Worksheets("Sheet1")
  Set html = New htmlDocument
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", URL, False
    .send
    html.body.innerHTML = .responseText
  End With

  '-----
  Open "E:\MorningStar.htm" For Output As #1 'Use your own path
  Print #1, html.body.outerHTML
  Close
  '-----
End Sub