【问题标题】:Use urlfetchapp with own redirection?使用带有自己重定向的 urlfetchapp?
【发布时间】:2014-08-14 12:17:21
【问题描述】:

我正在尝试在网站上做一个 urlfetchapp,该网站包含 HTML,但这对我来说已经足够了。 例如我想要this url

这种方法的问题是,直到我第一次访问this url,它才会显示任何数据。

我试图一个接一个地做 2 个 urlfetchapp。但这没有用。 我该如何解决这个问题?

下面是我的测试代码,如果有数据那么 objTable 应该得到数据。

function loadXML()
{ 
  try
  {
    var URL = "http://www.knzb.nl/verenigingen/wedstrijdsport/waterpolo/uitslagen_waterpolo/iframe/verenigingen/KNZB-DISTRICT-OOST/";
    var response = UrlFetchApp.fetch(URL);
    URL = "http://www.knzb.nl/verenigingen/wedstrijdsport/waterpolo/uitslagen_waterpolo/iframe/verenigingen/poule/1178/2074/DHS289F/";
    response = UrlFetchApp.fetch(URL).getContentText();
    Logger.log(response);
    var doc = Xml.parse(response, true);

    var objTable = doc.html.body.form.div[1].div.div.div.div.div.div;
  }
  catch(err)
  {
    var objTable = "Load failed";
    Logger.log("Loading data failed: " + err);
  }
  return objTable;
}

【问题讨论】:

  • 我试过这段代码,两个 urlFetch 语句都检索到了数据。第二个 urlFetch 将检索第一个注释掉的数据。 var doc = Xml.parse(response, true); 语句正在返回 XmlDocumentvar objTable = doc.html.body.form.div[1].div.div.div.div.div.div; 语句产生错误。 catch(err) 捕获错误并返回:加载数据失败:TypeError:无法从未定义中读取属性“div”。 doc 是全局变量吗? doc 定义在哪里?
  • 它将运行并获取一些数据。但是我正在获取的第二个网站并没有显示应有的数据。如果我希望数据按预期显示,我需要先打开第一页,然后再打开第二页。然后在浏览器中显示正确的数据。如果我获取了正确的数据,应该不会有任何错误。

标签: google-apps-script urlfetch


【解决方案1】:

我已经找到了我自己问题的答案。 需要重新发送 cookie。下面的脚本正在正常工作。

function loadXML()
{ 
  try
  {
    var URL = "http://www.knzb.nl/verenigingen/wedstrijdsport/waterpolo/uitslagen_waterpolo/iframe/verenigingen/KNZB-DISTRICT-OOST/";
    var response1 = UrlFetchApp.fetch(URL);
    Logger.log(response1);
    var cookieStr = response1.getHeaders()["Set-Cookie"];
    var params = {method: "POST", headers:{"Cookie": cookieStr}};
    URL = "http://www.knzb.nl/verenigingen/wedstrijdsport/waterpolo/uitslagen_waterpolo/iframe/verenigingen/poule/1178/2074/DHS289F/";
    response = UrlFetchApp.fetch(URL, params);
    Logger.log(response.getAllHeaders());
    response = response.getContentText();
    var doc = Xml.parse(response, true);

    var objTable = doc.html.body.form.div[1].div.div.div.div.div.div;
  }
  catch(err)
  {
    var objTable = "Load failed";
    Logger.log("Loading data failed: " + err);
  }
  return objTable;
}

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 2012-08-13
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2013-08-04
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多