我有一个简单的Google电子表格问题。我试图拉进一个表并且没有使用ImportHTML,它只会拉出第一个顶级单元并以某种方式复制它。我也尝试使用ImportXML,使用XPath Helper获取正确的XPath,并且它也不会加载正确的表数据。
Google Doc:
https://docs.google.com/spreadsheets/d/1-toAivOhywZuErHK0LB5EADiMu_T9ZNUTgMhqFRBHOU/edit?usp=sharing
我需要的是以下网站上的底部表格(id ='player_gbs'):
http://www.forge-db.com/us/us18/players/profile/?server=us18&world=Sinerania&id=12497
这是我到目前为止所尝试的内容,这也是GDoc中的所有内容。
=ImportHTML(B1, "table", 2)
两次返回以下行: “Great Building Era Lvl FP Req.FP FP Left 24h +”
=ImportXML(B1, "/html/body/div[@class='wrap']/div[@class='content'][2]/div[@class='b-box']")
返回:
“GB在过去24小时内达到新的水平,显示为黄色 背景“Great BuildingEraLvlFPReq.FPFP Left24h + Great BuildingEraLvlFPReq.FPFP Left24h +”
认为问题是/ div中包含的问题是<thead> and <tfoot> before <tbody>
所以我尝试了这个XPath并得到了N / A:
=ImportXML(B1, "/html/body/div[@class='wrap']/div[@class='content'][2]/div[@class='b-box']/div[@id='player_gbs_wrapper']/table[@id='player_gbs']/tbody")
答案 0 :(得分:1)
我相信你的问题是该表是通过JSON和javascript创建的。如果您在该页面上查看源代码,您将看到此块...
<script type="text/javascript" class="init">
$(document).ready(function() {
$('#player_gbs').dataTable( {
"aLengthMenu": [[30], ['All']],
"processing": true,
"serverSide": true,
"ajax": "../../getPlayerGBs.php?id=12497&server=us18",
这告诉我们数据来自以下网址。 http://www.forge-db.com/us/us18/getPlayerGBs.php?id=12497&server=us18
该URL提供填充表的数据。
此脚本(based off this SO response)将解析该Feed中的数据并将其写入标题为dataImport的工作表。它只获得前两个数据块,你只需要扩展循环来做更多事情。
function urlDownload() {
var dataImport = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('dataImport');
var apiPoint = "http://www.forge-db.com/us/us18/getPlayerGBs.php?id=12497&server=us18";
var response = UrlFetchApp.fetch(apiPoint);
var response_json = JSON.parse(response.getContentText());
var length = response_json.data.length;
var a = [];
for(i=0; i<length; i++){
dataImport.getRange(i+2, 1, 1, 1).setValue(response_json.data[i][0])
dataImport.getRange(i+2, 2, 1, 1).setValue(response_json.data[i][1])
}
}