Web scraping 从最初由jQuery填充的空表导入Google工作表中的数据
我想将数据从HTML页面(特别是)导入GoogleSheets页面。通常,这将通过使用Web scraping 从最初由jQuery填充的空表导入Google工作表中的数据,web-scraping,google-sheets,google-chrome-devtools,google-sheets-formula,firefox-developer-tools,Web Scraping,Google Sheets,Google Chrome Devtools,Google Sheets Formula,Firefox Developer Tools,我想将数据从HTML页面(特别是)导入GoogleSheets页面。通常,这将通过使用IMPORTHTML(或者,以更为粗俗的方式,IMPORTXML或IMPORTDATA)来实现 我想从上的“玩家”选项卡获取表格内容。在我的工作表中,这应该像(使用|的分隔单元格) 但是当我运行IMPORTHTML(,“table”,2)时,我只得到最上面一行: Accepted Player | Team | Rank | Wins | Losses | In-progress 如果
IMPORTHTML
(或者,以更为粗俗的方式,IMPORTXML
或IMPORTDATA
)来实现
我想从上的“玩家”选项卡获取表格内容。在我的工作表中,这应该像(使用|的分隔单元格) 但是当我运行IMPORTHTML(,“table”,2)时,我只得到最上面一行:
Accepted Player | Team | Rank | Wins | Losses | In-progress
如果我使用IMPORTXML
或IMPORTDATA
,我仍然无法从填充的表中获取任何内容,只获取列标题
如果您在上面的URL上查看页面源代码,您会注意到,并非巧合,只有该表的一部分被填充。问题是,查询感兴趣的页面时发出的初始请求返回一个模板——一个包含空表的页面。因此,
IMPORTHTML
、IMPORTXML
和IMPORTDATA
返回一个页面,其中的表只填充了标题,但没有内容
空表还没有我想要的数据;由一些jQuery代码填充。大概jQuery代码在填充表之前从某处获取数据,但我在浏览器的网络选项卡中没有看到与此对应的任何请求。我不知道web应用程序是如何工作的,也不知道如何找出这些数据是从哪里获取的
在我看来,我的选择是:
IMPORTHTML
/IMPORTXML
/IMPORTDATA
没有那么复杂。对于#2,我没有跟踪这个网站的jQuery代码(或者找到获取数据以填充表的位置)的调试诀窍。是否有任何devtools(在Firefox或Chrome中)我可以用来找出幕后发生了什么来获取这些数据并在我的工作表中复制这些逻辑?(我在这里的主要差距几乎可以肯定是我不了解如何获取这些数据,以及在哪里可以找到这些获取的痕迹。)
n、 b:这可能很容易通过使用脚本来更新工作表来完成。我可能会用Python和gspread来完成这项工作。但是我想知道,仅仅在Google Sheets中实现这一点是否真的不可能/不可行。Google Sheets不能用作无头浏览器,因为IMPORTDATA/IMPORTHTML/IMPORTXML只能看到URL指向的源代码,他们看不到链接的资源,也看不到加载和其他事件执行JavaScript的结果DOM 此外,如果不使用GoogleApps脚本或GoogleSheetsAPI以及您最喜欢的编程语言,GoogleSheets无法运行/复制jQuery的功能
如果您愿意使用GoogleApps脚本,正如Master所提到的,最简单的方法是使用API提供您正在查找的内容,但您也可以尝试复制jQuery发出的HTTP请求。这可以通过使用Google Apps脚本URL获取服务来实现。Google Sheets不能用作无头浏览器,因为IMPORTDATA/IMPORTHTML/IMPORTXML只能看到URL指向的源代码,他们看不到链接的资源,也看不到加载和其他事件所产生的JavaScript执行DOM 此外,如果不使用GoogleApps脚本或GoogleSheetsAPI以及您最喜欢的编程语言,GoogleSheets无法运行/复制jQuery的功能
如果您愿意使用GoogleApps脚本,正如Master所提到的,最简单的方法是使用API提供您正在查找的内容,但您也可以尝试复制jQuery发出的HTTP请求。这可以通过使用谷歌应用程序脚本URL获取服务来实现。到目前为止,您尝试了什么?向我们展示你在谷歌表单中使用的方法。您也没有指定预期的输出。非常感谢@Marios;我在中编辑了它以及预期的输出。请让我知道,如果你看到任何其他方式,使这个问题更清楚,更具体,或更具体。联系他们,看看他们是否提供了一个端点api。如果没有,并且他们同意报废,请尝试“网络”选项卡。查看是否存在对api终结点的特定请求。@主:网络选项卡不显示查询表中数据的任何请求。之后会有一些请求,其中加载了一些补充数据(与获取的数据相关联的图像),但实际上没有任何内容查询players表。我不熟悉web技术,所以我想知道的一部分是,对于jQuery逻辑填充此表,可能有哪些非基于请求的方法。数据似乎是直接加载的,但被加密的,而javascript将其解密并填充表。那只是猜测。无论如何,搜索他们的wiki提供了api,您可以在api中使用自定义函数,如
importjson
。到目前为止,您做了哪些尝试?向我们展示你在谷歌表单中使用的方法。您也没有指定预期的输出。非常感谢@Marios;我在中编辑了它以及预期的输出。请让我知道,如果你看到任何其他方式,使这个问题更清楚,更具体,或更具体。联系他们,看看他们是否提供了一个端点api。如果没有,并且他们同意报废,请尝试“网络”选项卡。查看是否存在对api终结点的特定请求。@主:网络选项卡不显示查询表中数据的任何请求。之后会有一些请求,其中包含一些补充数据(图像)
Accepted Player | Team | Rank | Wins | Losses | In-progress