GDocs ImportHTML/XML没有得到正确的数据
我有一个简单的Google Spreadsheet的问题。我试图拉入一张桌子,并没有使用ImportHTML运气,它只会拉第一个顶部单元格,并以某种方式复制它。我也尝试过使用XPath Helper来获取正确的XPath的ImportXML,它也不会加载正确的表数据。GDocs ImportHTML/XML没有得到正确的数据
谷歌文档:
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)
返回以下行两次: “伟大的建筑时代拉特FP询价FP FP左24小时+”
=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")
我相信你的问题是,该表是通过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)将解析来自该提要的数据并将其写入标题为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])
}
}
非常感谢您的帮助,我甚至没有考虑过,完全合理,您的代码是完美的。再次感谢! – Donny