Vba 导入网页源代码,包括网页上未显示的源代码

Vba 导入网页源代码,包括网页上未显示的源代码,vba,web-scraping,Vba,Web Scraping,我想在excel中导入我使用Chrome中的查看页面源代码选项看到的网页源代码。但当我使用下面的代码导入它时,它不会导入所有内容。我要查找的值不会显示在网页上。 我也无法使用getElementsByClassName或其他方法找到元素 Private Sub HTML_VBA_Excel() Dim oXMLHTTP As Object Dim sPageHTML As String Dim sURL As String 'Change the URL before executing th

我想在excel中导入我使用Chrome中的
查看页面源代码
选项看到的网页源代码。但当我使用下面的代码导入它时,它不会导入所有内容。我要查找的值不会显示在网页上。 我也无法使用
getElementsByClassName
或其他方法找到元素

Private Sub HTML_VBA_Excel()
Dim oXMLHTTP As Object
Dim sPageHTML As String
Dim sURL As String

'Change the URL before executing the code
sURL = "http://pntaconline/getPrDetails?entry=8923060"

'Extract data from website to Excel using VBA
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oXMLHTTP.Open "GET", sURL, False
oXMLHTTP.send
sPageHTML = oXMLHTTP.responseText

'Get webpage data into Excel
' If longer sourcecode mean, you need to save to a external text file or somewhere,
' since excel cell have some limits on storing max characters

ThisWorkbook.Sheets(1).Cells(1, 1) = sPageHTML

MsgBox "XMLHTML Fetch Completed"

End Sub
我要导入的数据是ID和名称:

因此,您需要了解DOM,以了解它为什么不能加载所有内容

XMLHTTP将加载您请求的特定资源。很多网页,几乎所有的网页,在初始请求完成后加载额外的资源

如果你丢失了一些东西,它可能被加载到不同的网络请求中。所以,在Chrome中打开您的DevTools,确保网络选项卡正在录制,并在加载目标页面时观察有多少网络请求进出

本质上,如果您使用的是XMLHTTP,那么您必须模拟其中的每一个来获取您想要获取的请求

编辑

因此,您只是将数据响应粘贴到Excel中

最好创建HTMLDocument变量,然后将来自XMLHTTP的响应设置为如下所示的响应:

然后,您可以为工作表拆分该响应,或对其进行搜索并提取VBA内存中的值,而不是打印到工作表中

还可以将xString responseText设置为新HTMLDocument变量的innerHTML

Dim xHTML as HTMLDocument
Set xHTML.innertext = xString

你说得对。内容在“非活动”选项卡下,我想这就是我无法导入它的原因。不,看起来是这样的,除非它有效,否则你不必接受答案。lol示例:每个网页只是其他人电脑文件夹中的一堆文件。当你连接到主页时,浏览器(chrome、firefox、ie)会加载所有这些文件。现在,当您使用XMLHTTP时,您的意思是,我想要一个文件,在这个特定的地址。浏览器将为您执行此操作,并将所有文件放在您看到的页面上。但既然你是在直接请求,你就得找出哪一个能给你带信息的文件。只是因为它在dom中并不意味着它会从主机上加载当你使用DevTools时,你可以在chrome或IE或FF的网络选项卡上看到一个列表,它会显示每个请求和每个响应。下面介绍如何在Chrome中使用它,并查找所有详细信息,这样您就可以将这些详细信息带回XMLHTTP,并发出请求以查找数据:
Dim xHTML as HTMLDocument
Set xHTML.innertext = xString