我正在尝试获取以下页面
http://www.stluciesheriff.com/inmate_list.php
使用UrlFetchApp类中的fetch()方法
要使上述页面显示结果,您必须在
处提交表单http://www.stluciesheriff.com/inmate_search.php
我尝试使用fetch(url,payload)方法复制表单数据和标题,但是对于我的生活,我无法弄清楚如何让它返回我想要的实际数据
这是我的尝试
function grabdata() {
//var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var postdata = {
"First":"",
"Last":"",
"When":2,
"Submit":"Search"
};
var payload = {
"method":"POST",
"payload":postdata
};
var data = UrlFetchApp.fetch("http://www.stluciesheriff.com/inmate_list.php",payload);
Logger.clear();
Logger.log(data.getContentText());
return e; // intentional error thrown for debugger
}
我有一种感觉,我错过了一些明显的东西,因为我从来没有真正体验过从需要POST数据的网站获取数据。
答案 0 :(得分:0)
您可以使用Google提供的Xml Service。 Xml库可以将html一直解析为您需要的特定元素。我使用Chrome检查器来确定我需要哪个元素。
我写了一些示例脚本来帮助你。
var data = UrlFetchApp.fetch("http://www.stluciesheriff.com/inmate_list.php",payload);
var entries = [];
var xml = Xml.parse(data.getContentText(), true);
var resultTable = xml.getElement().getElement("body").getElement("table").getElements("tr")[2]
.getElements("td")[1].getElement("table").getElements("tr")[4].getElement("td").getElement("table");
var tableRows = resultTable.getElements("tr");
for (var i=1; i<tableRows.length; i++) {
entries.push(extractDataFromRow(tableRows[i]));
}
Logger.log(Utilities.jsonStringify(entries));
return entries;
}
function extractDataFromRow(row) {
var obj = {};
var tds = row.getElements("td");
obj.name = tds[0].getElement("a").getText();
obj.dob = tds[1].getText();
obj.age = tds[2].getText();
obj.inmate_id = tds[3].getText();
obj.booking = tds[4].getText();
return obj;
}