【发布时间】:2015-10-11 23:40:16
【问题描述】:
我想为这个页面上的每个链接刮掉后面的页面详细信息页面。
我可以在这个页面获取所有信息:PAGE
但是,我想在详细信息页面上获取所有信息,但 href 链接看起来像这样,例如:
href="javascript:subOpen('9ca8ed0fae15d43dc1257e7300345b99')"
这是我使用ImportHTML 函数获取总体概览的示例电子表格。
对如何获取详细信息页面有任何建议吗?
更新
我实现了以下方法:
function doGet(e){
var base = 'http://www.ediktsdatei.justiz.gv.at/edikte/ex/exedi3.nsf/'
var feed = UrlFetchApp.fetch(base + 'suche?OpenForm&subf=e&query=%28%5BVKat%5D%3DEH%20%7C%20%5BVKat%5D%3DZH%20%7C%20%5BVKat%5D%3DMH%20%7C%20%5BVKat%5D%3DMW%20%7C%20%5BVKat%5D%3DMSH%20%7C%20%5BVKat%5D%3DGGH%20%7C%20%5BVKat%5D%3DRH%20%7C%20%5BVKat%5D%3DHAN%20%7C%20%5BVKat%5D%3DWE%20%7C%20%5BVKat%5D%3DEW%20%7C%20%5BVKat%5D%3DMAI%20%7C%20%5BVKat%5D%3DDTW%20%7C%20%5BVKat%5D%3DDGW%20%7C%20%5BVKat%5D%3DGA%20%7C%20%5BVKat%5D%3DGW%20%7C%20%5BVKat%5D%3DUL%20%7C%20%5BVKat%5D%3DBBL%20%7C%20%5BVKat%5D%3DLF%20%7C%20%5BVKat%5D%3DGL%20%7C%20%5BVKat%5D%3DSE%20%7C%20%5BVKat%5D%3DSO%29%20AND%20%5BBL%5D%3D0').getContentText();
var d = document.createElement('div'); //assuming you can do this
d.innerHTML = feed;//make the text a dom structure
var arr = d.getElementsByTagName('a') //iterate over the page links
var response = "";
for(var i = 0;i<arr.length;i++){
var atr = arr[i].getAttribute('onclick');
if(atr) atr = atr.match(/subOpen\((.*?)\)/) //if onclick calls subOpen
if(atr && atr.length > 1){ //get the id
var detail = UrlFetchApp.fetch(base + '0/'+atr[1]).getContentText();
response += detail//process the relevant part of the content and append to the reposnse text
}
}
return ContentService.createTextOutput(response);
}
但是,运行该方法时出现错误:
ReferenceError:“文档”未定义。 (第 6 行,文件“”)
document 是什么对象?
我已经用 webapp 更新了Google Spreadsheet。
【问题讨论】:
-
this question 的副本。
-
如果你有一点java背景,你可以使用htmlunit.sourceforge.net(或其他测试框架)来废弃任何类型的网页。它支持java脚本交互以及获取网页元素的实用方法。
标签: javascript google-apps-script google-sheets web-applications