首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用hpricot构建flashvar数组

使用hpricot构建flashvar数组
EN

Stack Overflow用户
提问于 2011-04-22 03:31:27
回答 1查看 173关注 0票数 0

我以前使用过hpricot从一些超文本标记语言标签内的网站抓取内容,但是我正在尝试构建一个在这个页面http://view-source:http://megavideo.com/?v=014U2YO9上找到的所有flashvar的数组

代码语言:javascript
复制
require 'hpricot'
require 'open-uri'

flashvars = Array.new
doc = Hpricot(open("http://megavideo.com/?v=014U2YO9"))

for flashvars in (doc/"/param[@name='flashvars']") do
  flashvars << flashvar
end

我一直在尝试上面的代码片段,希望我是在正确的轨道上,有人能进一步帮助我吗?

谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-22 03:52:13

您使用的语法表明您正在尝试从<param>元素获取属性,但该页面上不存在此类标记。对flashvar对象的属性有过多的JavaScript赋值。假设这些都是您想要的,那么您不需要Hpricot,只需要JS的正则表达式。这似乎起作用了:

代码语言:javascript
复制
require 'open-uri'
html = open("http://megavideo.com/?v=014U2YO9").read

flashvars = Hash[ html.scan( /flashvars\.(\w+)\s*=\s*["']?(.+?)["']?;/ ) ]

require 'pp' # Just for pretty output here
pp flashvars

#=> {"logintxt"=>"Login",
#=>  "registertxt"=>"Register",
#=>  "searchtxt"=>"Search videos",
#=>  "searchrestxt"=>"\"",
#=>  "useSystemFont"=>"0",
#=>  "size"=>"17",
#=>  "loginAct"=>"?c=login%26next%3Dv%253D014U2YO9",
#=>  "registerAct"=>"?c=signup",
#=>  "userAct"=>"?c=account",
#=>  "signoutAct"=>"javascript:signout()",
#=>  "myvideostxt"=>"My Videos",
#=>  "videosAct"=>"?c=myvideos",
#=>  "added"=>"2011-04-14",
#=>  "username"=>"beenerkeekee19952",
#=>  etc.

请注意,这使得所有的值在Ruby语言中都是字符串,甚至是在JavaScript中是数字的值。由于它去掉了JavaScript字符串的前导/尾随引号,因此您无法区分flashvars.foo = 42;flashvars.bar = "42";

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5748876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档