Tag: nokogiri

用Nokogiri解析简单的XML

我有以下XML: Title 1 http://www.example.com/url-1 Title 2 http://www.example.com/url-2 Title 3 http://www.example.com/url-3 而且,我想将其转换为HTML列表: Title 1 Title 2 Title 3 目前我有这个: 控制器: require ‘nokogiri’ doc = Nokogiri::XML(…) @links = doc.xpath(‘//links/item’).map do |i| {‘title’ => i.xpath(‘//title’), ‘url’ => i.xpath(‘//url’)} end 模板: <a href="https://stackoverflow.com/questions/3938810/parsing-simple-xml-with-nokogiri/”> 结果HTML: Title 1Title 2Title 3 Title 1Title 2Title 3 Title 1Title 2Title 3 我究竟做错了什么? 有更好的方法吗?

XPath以查找所有后续兄弟姐妹,直到特定类型的下一个兄弟

鉴于此XML / HTML: Label1Value1 Label2Value2 Label3Value3aValue3b Label4Value4 我想找到所有 然后,为每个 找到以下 直到下一个 。 使用Ruby的Nokogiri我能够像这样完成: dl.xpath(‘dt’).each do |dt| ct = dt.xpath(‘count(following-sibling::dt)’) dds = dt.xpath(“following-sibling::dd[count(following-sibling::dt)=#{ct}]”) puts “#{dt.text}: #{dds.map(&:text).join(‘, ‘)}” end #=> Label1: Value1 #=> Label2: Value2 #=> Label3: Value3a, Value3b #=> Label4: Value4 但是,你可以看到我在Ruby中创建一个变量,然后使用它编写一个XPath。 如何编写一个相同的XPath表达式? 我猜到: following-sibling::dd[count(following-sibling::dt)=count(self/following-sibling::dt)] 但显然我不明白那里的self意味着什么。 这个问题类似于XPath:选择所有以下兄弟,直到另一个兄弟,除了’stop’节点没有唯一标识符。 这个问题与xpath几乎相同,除了我要求的XPath-only解决方案之外, 找到所有以下兄弟相邻节点直到另一个类型 。

如何在Nokogiri中进行正则表达式搜索以查找与某个开头相匹配的文本?

鉴于: require ‘rubygems’ require ‘nokogiri’ value = Nokogiri::HTML.parse(<<-HTML_END) " A Foo B C Bar D E F ” HTML_END 我想做一些像我在Hpricot中可以做的事情: divs = value.search(‘//div[@id^=”para-“]’) 如何在XPath样式中搜索元素的模式? 我在哪里可以找到帮助我的文档? 我没有在rdocs中看到这一点。

安装nokogiri安装了Mac OS X 10.8.2 XCode

试图在Mountain Lion上安装nokogiri。 我使用的是ruby 1.8.7,但刚刚升级到1.9.3但它阻止了捆绑安装工作。 顺便说一下,我可以通过卸载ruby 1.9.3并恢复到1.8.7来解决这个问题。 然而,这显然是一个次优的解决方案,因为我不希望在剩下的时间里被卡在1.8.7上…… Users-MacBook-Pro:sample_app user$ ls Gemfile app doc script Gemfile.lock config lib spec README.md config.ru log tmp Rakefile db public vendor Ravins-MacBook-Pro:sample_app user$ bundle Fetching gem metadata from https://rubygems.org/……. /Users/user/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler.rb:263: warning: Insecure world writable dir /usr/local in PATH, mode 040777 Using rake (0.9.2.2) Using i18n (0.6.1) Using multi_json (1.3.6) Using […]

获取Nokogiri中属性的值以提取链接URL

我有一个看起来像这样的文件: link 我无法让Nokogiri得到href属性的值。 我想将地址作为字符串存储在Ruby变量中。

Nokogiri vs Hpricot?

你会选哪一个? 我的重要属性是(不按顺序): 支持和未来的增强function。 社区和一般知识库(在互联网上)。 综合(IE,经证实可解析各种*。* ml页面)。 性能。 内存占用(运行时,而不是代码库)。

在Rails中不能要求’nokogiri’(但在irb中工作)

我刚刚开始使用Ruby on Rails,到目前为止它工作得很好。 我现在正在尝试实现一个gem,但它不起作用,我希望它只是一个初学者的错误 – 我尚未掌握的东西! 我已经按照教程并获得了我的hello world示例 – 也设法将git推送到我的Heroku帐户。 我开始按照这里的教程: http : //railscasts.com/episodes/190-screen-scraping-with-nokogiri并在终端中使用以下代码(在mac上) require ‘rubygems’ require ‘nokogiri’ require ‘open-uri’ url = “http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find” doc = Nokogiri::HTML(open(url)) puts doc.at_css(“title”).text 所以这很好用。 我可以在终端内看到标题。 但是,当我尝试将此代码放在我的视图控制器中时,它找不到nokogiri gem。 我的控制器中的代码是 class HomeController < ApplicationController def index require 'rubygems' require 'nokogiri' require 'open-uri' url = "http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find" doc = Nokogiri::HTML(open(url)) @mattVar = doc.at_css("title").text end […]

nokogiri可以在保存xml时使用单引号属性吗?

Nokogiri使用双引号保存XML属性,即使它读取的DOM具有单引号。 这当然是完全合法的,但它引入了令人烦恼的文件内容更改,即使DOM没有改变,这使得像diff和git这样的工具更难以弄清楚发生了什么。 我可以强制它使用单引号(或者甚至更好,如果没有修改,保留原始中的任何引用样式)? REXML用于设置单/双引号: doc.context[:attribute_quote] = :quote 我找不到与nokogiri类似的东西。 是否可以使用单引号保存文档?

Nokogiri与Ruby on Rails有关

我正在尝试在我的机器上安装nokogiri但是我收到以下错误: Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. current directory: /Users/username/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.6.4/ext/nokogiri /Users/username/.rbenv/versions/2.0.0-p481/bin/ruby -r ./siteconf20151127-29540-11ahx4h.rb extconf.rb checking if the C compiler accepts … *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the […]

用nokogiri更新节点打开xml文件并保存

我试图弄清楚如何打开一个xml文件,按id搜索,替换节点中的值,然后重新保存文档。 我的xml 1@1.com false 2@2.com false 3@3.com false 4@4.com false 5@5.com false 我的代码打开并找到一个节点 xml_content = File.read(“/home/mike/app/users.xml”) doc = Nokogiri::XML(xml_content) node_update = doc.search(“//user[@id=’1370028588345′] //sent”) node_update.inner_html ##returns value of “sent” 我卡住的部分实际上是更新节点。 node_update.inner_html = “true”在inner_html上返回方法错误。 之后保存更新的文件。