我正在使用OpenURI检索网页:

require 'open-uri'
page = open('http://www.example.com').read.scrub


现在,我想解析检索页面的属性playerurlplayerdatapageurl的值。它们显示在<script>标记中:

<script>
..
..
  PlayerWatchdog.init({
      'playerurl': 'http://cdn.static.de/now/player.swf?ts=2011354353',
      'playerdata': 'http://www.example.com/player',
      'pageurl': 'http://www.example.com?test=2',
      });
..
..
</script>


什么是最明智的方式来做到这一点?

最佳答案

Ruby没有内置的javascript解析功能。您可以使用正则表达式,尽管这对页面的格式非常敏感(例如,如果页面开始使用双引号来表示字符串,则此表达式会中断):

playerurl = page[/'playerurl':\s*'([^']*)'/, 1]

08-06 18:15