使用UrlFetchApp.fetch()。getContentText从网页中丢失源代码

时间:2013-04-21 02:27:25

标签: google-apps-script urllib2 urlfetch

并非所有来自网站的视图来源http://www.portofhueneme.org/home.php均已从UrlFetchApp.fetch().getContentText进行检索。

我听说UrlFetchApp只是python的urllib2模块的包装器。一个 previous post提到urllib2没有获取从脚本动态生成的上下文,但我找不到任何会生成页面其余部分的脚本。

我正试图在“重要公告”下列出日期。

function test_date() {
  var url = UrlFetchApp.fetch('http://www.portofhueneme.org/home.php') ;
  var text= hueneme_url.getContentText() ;
  Logger.log(hueneme_text) ;

  var pattern = /Current Vessel Schedule/

  var start =  hueneme_text.search(pattern) ;
  Logger.log("\n"+start) ;

}

1 个答案:

答案 0 :(得分:0)

UrlFetchApp和urllib2之间没有任何关联。 (也许你听到的是关于App Engine上等效的UrlFetch API,虽然我不知道;但是对于Apps Script来说肯定不是这样。)但是,一般来说,任何语言或平台中的类似UrlFetchApp的库都不会执行脚本在页面中(即使JavaScript自己的XmlHttpRequest也没有这样做!)因此观察仍然相关。

在这种情况下,您的问题是该文本不包含/Current Vessel Schedule/,因为如果您查看该页面的来源,您会看到这些单词之间不仅有一个空格,而是大量的空格包括换行符。你没有在可见页面中看到它,但它在HTML代码中,这是你从UrlFetchApp获得的。

要完成这项工作,您需要将脚本更改为/Current\s*Vessel\s*Schedule/。这是完整的例子:

function test_date() {
  var url = UrlFetchApp.fetch('http://www.portofhueneme.org/home.php') ;
  var text = url.getContentText() ;  
  var pattern = /Current \s*Vessel\s*Schedule/
  var start =  text.search(pattern) ;
  Logger.log(start) ;
}