Tag: nokogiri

Nokogiri在heroku上产生不同的结果?

我有一个非常奇怪的问题,我很感激帮助追踪它。 我正在使用nokogiri gem解析一些html,我正在解析一个有奇怪字符的文件。 不完全确定这个角色是什么,在vim中它显示为^ Q. 在我自己的计算机上,一切正常,但是在heroku上它插入当它击中角色时,选择器只返回奇怪角色之前的元素。 为了说明: Nokogiri::HTML( open(“http://thoms.net.nz/e2.html”)).css(“body div”).count在heroku上Nokogiri::HTML( open(“http://thoms.net.nz/e2.html”)).css(“body div”).count为1,在计算机上Nokogiri::HTML( open(“http://thoms.net.nz/e2.html”)).css(“body div”).count为2。 – 可以从http://thoms.net.nz/e2.html下载包含此字符的文件。 我的计算机和heroku都使用ruby 1.9.3运行nokogiri 1.5.5。

如何检索nokogiri处理指令属性?

我正在使用Nokogiri解析XML。 我能够检索样式表。 但不是每个样式表的属性。 1.9.2p320 :112 >style = xml.xpath(‘//processing-instruction(“xml-stylesheet”)’).first => # style.name => “xml-stylesheet” style.content => “type=\”text/xsl\” href=\”CDA.xsl\”” 有没有简单的方法来获取类型,href属性值? 要么 唯一的方法是解析处理指令的内容(style.content)?

使用Nokogiri获取包含特定属性名称的元素中的所有节点

我想使用Nokogiri来提取包含特定属性名称的元素中的所有节点。 例如,我想在下面的文档中找到包含属性“blah”的2个节点。 @doc = Nokogiri::HTML::DocumentFragment.parse <<-EOHTML Three’s Company A love triangle. test test test EOHTML 我在这个网站上找到了这个建议(见下文): http : //snippets.dzone.com/posts/show/7994 ,但它没有返回上面例子中的2个节点。 它返回一个空数组。 # get elements with attribute: elements = @doc.xpath(“//*[@*[blah]]”) 关于如何做到这一点的想法? 谢谢! 我在这里找到了这个

如何删除HTML节点之间的空格?

我正在尝试从 标记之间的HTML片段中删除空格 Foo Bar bar bar bar bla 如您所见, 标记之间总是有空格。 问题是在将字符串保存到我的数据库时,空格会创建标记。 像strip或gsub这样的方法只删除节点中的空格,导致: FooBar barbarbar bla 而我想要: Foo Barbar bar barbla 我正在使用: Nokogiri 1.5.6 Ruby 1.9.3 轨道 更新: 偶尔会有 标签的子节点产生同样的问题:之间有空格 示例代码 注意:代码通常在一行中,我重新格式化它,因为它是无法忍受的,否则…… Selling an Appartment beautiful apartment! near the train station . . . 10 minutes away from a shopping mall nice view . . . […]

Nokogiri本机扩展无法构建(不是libxml2或libxslt缺少问题)

正如标题所说,它似乎没有失败,因为缺少libxml2或libxslt。 我不确定该怎么做错误。 (得到它?因为问题出在制作期间?嘿嘿……) Anywho,这是我得到的输出。 任何想法,将不胜感激: Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. /usr/bin/ruby1.9.1 extconf.rb extconf.rb:10: Use RbConfig instead of obsolete and deprecated Config. checking for libxml/parser.h… yes checking for libxslt/xslt.h… yes checking for libexslt/exslt.h… yes checking for iconv_open() in iconv.h… yes checking for […]

在Yosemite 10.10.3上安装Nokogiri

我有: Mac OS X Yosemite 10.10.3 MacPorts(不是Brew) 系统中的Ruby 2(不是RVM) 我想安装Nokogiri并尝试: port install nokogiri 得到了: Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20150323-30174-1mqhl4i.rb extconf.rb checking if the C compiler accepts … yes checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future… no Building nokogiri […]

HTML解析为Ruby中的DOM

Ruby中是否有任何HTML解析器将HTML文档读入DOM树并将HTML标记表示为DOM元素? 我知道Nokogiri,但它没有将HTML解析为DOM树。

由于缺少原生扩展,Nokogiri安装错误

我一直在尝试根据这些说明安装Ruby on Rails。 但是,运行gem install rails -v 4.2.4时出现以下错误: Fetching: rack-1.6.4.gem (100%) Successfully installed rack-1.6.4 Building native extensions. This could take a while… ERROR: Error installing rails: ERROR: Failed to build gem native extension. /home/falak/.rvm/rubies/ruby-2.2.3/bin/ruby -r ./siteconf20150909-22683-172bl7d.rb extconf.rb checking if the C compiler accepts … *** extconf.rb failed *** Could not create Makefile due to some […]

Nokogiri 1.5.2无法在Ubuntu 11.10上安装

真的很快,我知道一个类似的问题 。 但是,遵循最高评级的答案是行不通的。 我已经重新启动了我的系统和终端,但无济于事。 出于某种原因,Nokogiri没有意识到我安装了libxslt1-dev ,虽然我明确安装了它,但是使用了sudo apt-get install libxslt-dev和sudo apt-get install libxslt1-dev 。 这是输出; 我错过了什么吗? $ gem install nokogiri -v ‘1.5.2’ Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. ~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb extconf.rb:10: Use RbConfig instead of obsolete and deprecated Config. checking for libxml/parser.h… yes […]

XPath选择前面的元素与可选的插入空白文本节点

给定一个元素作为上下文我想选择前面的兄弟元素并检查它是否具有特定的名称。 需要注意的是,如果存在具有非空白内容的插入文本节点,我不想选择它。 例如,给定这个XML文档…… a1a2 b a3 a4 a5 …然后: 对于“a1”,应该没有匹配(紧接在它之前的兄弟元素) 对于“a2”,则应匹配“a1”(没有插入的文本节点) 对于“a3”,应该没有匹配(存在具有非空白内容的插入文本节点) 对于“a4”,则应匹配“a3”(插入的文本节点仅为空格) 对于“a5”,应该没有匹配(前面的兄弟元素不是 )。 我可以检查前面的兄弟姐妹是否是 with preceding-sibling::*[1][name()=”a”] 但是,我无法弄清楚如何说“选择以下兄弟节点,无论元素或文本,看看是不是文本还是normalize-space(.)=”” 。我最好的猜测是这样的: preceding-sibling::*[1][name()=”a”][following-sibling::node()[1][not(text()) or normalize-space(.)=””]] ……但似乎没有效果。 这是我的测试Ruby文件: require ‘nokogiri’ xpath = ‘preceding-sibling::*[1][name()=”a”][following-sibling::node()[1][not(text()) or normalize-space(.)=””]]’ fragment = Nokogiri::XML.fragment ‘a1a2 b a3 a4 a5’ fragment.css(‘a’).each{ |a| p [a.text,a.xpath(xpath).to_s] } #=> [“a1”, “”] #=> [“a2”, “”] #=> [“a3”, “a2”] #=> […]