Tag: nokogiri

使用Ruby代码解析Javascript

我正在Ruby中编写测试代码并尝试解析网站的HTML源文件。 它有一个JavaScript变量,我可以用它来与其他值进行比较。 例如: function GetParam(name) { var req_var = { a: ‘xyz’, b: ‘yy.com’, c: ‘en’, d:0, e: ‘y’ }; } 这里我想从这个函数中提取变量req_var 。 有可能吗? 如果是这样,请有人帮助我吗?

尝试使用nokogiri获取xml文件中的cdata标记内容

我已经看到了几件事,但到目前为止似乎没有任何工作。 我正在使用rails 3 ruby​​ 1.9.2上的nokogiri通过url解析xml。 xml的片段如下所示: 我试图解析这个以获取与NewsLineText相关联的文本 r = node.at_xpath(‘.//newslinetext’) if node.at_xpath(‘.//newslinetext’) s = node.at_xpath(‘.//newslinetext’).text if node.at_xpath(‘.//newslinetext’) t = node.at_xpath(‘.//newslinetext’).content if node.at_xpath(‘.//newslinetext’) puts r puts s ? if s.blank? ‘NOTHING’ : s puts t ? if t.blank? ‘NOTHING’ : t 我得到的回报是 NOTHING NOTHING 所以我知道我的标签被正确命名/拼写以获取newslinetext数据,但是cdata文本永远不会出现。 我需要用nokogiri来获取此文本?

保存网站中的所有图像文件

我正在为自己创建一个小应用程序,我在其中运行Ruby脚本并保存我博客上的所有图像。 在我识别出图像文件后,我无法弄清楚如何保存图像文件。 任何帮助将非常感激。 require ‘rubygems’ require ‘nokogiri’ require ‘open-uri’ url = ‘[my blog url]’ doc = Nokogiri::HTML(open(url)) doc.css(“img”).each do |item| #something end

如何创建一个nokogiri不区分大小写的Xpath选择器?

我正在使用nokogiri来选择’keywords’属性,如下所示: puts page.parser.xpath(“//meta[@name=’keywords’]”).to_html 我正在使用的其中一个页面的关键字标签带有大写字母“K”,这促使我使查询不区分大小写。 AND 所以,我的问题是:使nokogiri选择案例不敏感的最佳方法是什么? 编辑托马拉克的建议如下,对于这个具体问题非常有用。 我也想用这个例子来帮助更好地理解nokogiri,并且有一些我想知道并且没有成功搜索的问题。 例如,正则表达式’伪类’ Nokogiri Docs是否适合这样的问题? 我也很好奇nokogiri中的匹配?()方法。 我未能找到有关该方法的任何说明。 它与XPath 2.0中的“匹配”概念有什么关系(因此可以用来解决这个问题)吗? 非常感谢。

Nokogiri和XPath中未定义的名称空间前缀

我正在尝试解析Youtube Gdata以查看是否存在具有给定ID的video。 但是没有正常的标签,但有命名空间。 在链接http://gdata.youtube.com/feeds/api/videos?q=KgfdlZuVz7I上有标记: 1 有命名空间openSearch: xmlns:openSearch=’http://a9.com/-/spec/opensearchrss/1.0/’ 但我不知道如何在Nokogiri和Ruby中处理它。 这是代码的一部分: xmlfeed = Nokogiri::HTML(open(“http://gdata.youtube.com/feeds/api/videos?q=#{video_id}”)) xmlfeed.at_xpath(“openSearch:totalResults”) 它给出了错误: Undefined namespace prefix: openSearch:totalResults

如何使用nokogirivalidationXHTML?

我发现一些post暗示你可以使用nokogiri gemvalidationXHTML对其DTD的影响。 虽然我已成功使用它来成功解析XHTML(寻找’a’标签等),但我正在努力validation文档。 对我来说,这个: doc = Nokogiri::XML(Net::HTTP.get(URI.parse(“http://www.w3.org”))) puts doc.validate 导致整堆: [ #, #, #, #, #, #<Nokogiri::XML::SyntaxError: No declaration for attribute profile of element head [repeat for every tag in the document.] ] 所以我假设这不是正确的方法。 我似乎无法找到任何好的例子 – 任何人都可以建议我做错了吗? 我在Mac OSX 10.5.8上运行ruby 1.8.6。 Nokogiri告诉我: nokogiri: 1.3.3 warnings: [] libxml: compiled: 2.6.23 loaded: 2.6.23 binding: extension

Nokogiri(RubyGem):查找并替换HTML标记

我有以下HTML: Foo The quick brown fox. Bar Jumps over the lazy dog. …并且通过使用RubyGem Nokogiri ( hpricot替换),我想将其更改为以下HTML: Foo The quick brown fox. Bar Jumps over the lazy dog. 换句话说:如何使用Nokogiri查找和替换某些HTML标记? 我知道如何找到它们(使用css关键字),但我不知道在解析文档时如何替换它们。 谢谢你的帮助!

使用Nokogiri的XML Builder添加命名空间

我一直在破坏我的头几个小时,但我似乎无法确定如何在使用Nokogiri XML Builder类构建XML结构时添加XMLNS名称空间。 例如,考虑下面的XML示例:我可以在GetQuote标记之间创建所有内容,但创建“p:ACMRequest”仍然是一个谜。 我遇到了这个参考资料, https://gist.github.com/428455/7a15f84cc08c05b73fcec2af49947d458ae3b96a ,这对我来说仍然没有意义。 即使参考XML文档,http://www.w3.org/TR/xml-names/,也没有多大意义。 … … … … … …

在mac(libxml2)上安装nokogiri 1.6.0时出错

更新:已修复 我在另一个post中找到了答案。 我使用的解决方法是告诉Nokogiri使用系统库: NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install ==== 试图在Mac上安装nokogiri 1.6.0。 在以前的版本中,我没有遇到任何问题。 但1.6.0拒绝安装。 这是错误: Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. /Users/josenriq/.rvm/rubies/ruby-1.9.3-head/bin/ruby extconf.rb Extracting libxml2-2.8.0.tar.gz into tmp/i686-apple-darwin11/ports/libxml2/2.8.0… ERROR tar: This does not look like a tar archive tar: Skipping to next header tar: Archive contains […]

为什么Nokogiri xpath不像xmlns声明

我正在使用Nokogiri :: XML来解析Amazon SimpleDB的响应。 响应类似于: Foo42 BarXYZ 如果我直接将响应交给Nokogiri,则所有XPath查询(例如doc/”//Item/Attribute[Name=’Foo’]/Value” )都会返回一个空数组。 但是,如果我从SelectResponse标记中删除xmlns属性,它将完美地运行。 是否需要做一些额外的事情来解释名称空间声明? 这种解决方法感觉非常像黑客。