0

并非所有来自该站点的视图源:http://www.portofhueneme.org/home.php都是从UrlFetchApp.fetch().getContentText.

我听说 UrlFetchApp 只是 python 的 urllib2 模块的包装器。之前的一篇文章提到 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) ;

}

4

1 回答 1

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) ;
}
于 2013-04-21T13:20:48.777 回答