Tag: nokogiri

直接在Nokogiri的标签内获取文本

我有一些HTML看起来像: Hello (2009) 我已将所有HTML加载到名为record的变量中。 我需要解析一年,即2009年是否存在。 如何获取dt标签内的文本而不是标签内的文本? 我使用了record.search(“dt”).inner_text ,这给了我一切。 这是一个微不足道的问题,但我还没有想到这一点。

使用Nokogiri构建器创建带有命名空间根元素的XML文档

我正在为需要命名空间的XML数据格式实现导出器。 我正在使用Nokogiri XML Builder(版本1.4.0)来执行此操作。 但是,我不能让Nokogiri创建一个带有命名空间的根节点。 这有效: Nokogiri::XML::Builder.new { |xml| xml.root(‘xmlns:foobar’ => ‘my-ns-url’) }.to_xml 就像这样: Nokogiri::XML::Builder.new do |xml| xml.root(‘xmlns:foobar’ => ‘my-ns-url’) { xml[‘foobar’].child } end.to_xml 但是,我需要像这样的东西,这不起作用: Nokogiri::XML::Builder.new { |xml| xml[‘foobar’].root(‘xmlns:foobar’ => ‘my-ns-url’) }.to_xml NoMethodError: undefined method `namespace_definitions’ for # 显然,在使用之前必须定义命名空间,因此无法将其添加到根节点。 我在Nokogiri邮件列表上发现了一个关于此的问题 ,但没有回复。 有人有解决方案吗?

运行bundle install时出现Nokogiri错误

试图让克隆的Rails应用程序运行。 运行bundle install此错误: Using mini_portile (0.5.0) Installing nokogiri (1.6.0) Gem::InstallError: nokogiri requires Ruby version >= 1.9.2. An error occurred while installing nokogiri (1.6.0), and Bundler cannot continue. Make sure that `gem install nokogiri -v ‘1.6.0’` succeeds before bundling. 但这是rbenv version的输出: › rbenv version 1.9.3-p429 (set by /Users/andrewguo/.rbenv/version) 运行gem list我得到: . . . mini_portile (0.5.0) minitest […]

Nokogiri:使用XPath搜索

我使用Nokogiri (Rubygem)css搜索在我的html中查找某些 。 看起来Nokogiri的css搜索不喜欢正则表达式。 我想切换到Nokogiri的xpath搜索,因为它似乎支持搜索字符串中的正则表达式。 如何在xpath搜索中实现下面提到的(伪)css搜索? require ‘rubygems’ require ‘nokogiri’ value = Nokogiri::HTML.parse(<<-HTML_END) " A B Bla C D 3 ” HTML_END # my_block is given my_bl = “1” # my_eq corresponds to this regex my_eq = “\/[0-9]+\/” # FIXME The following line should be changed to an xpath search. if my_div = value.css(“div#eq-#{my_eq}_bl-#{my_bl}.foo”).first # […]

如何在Nokogiri中使用XPath?

我没有找到任何文档或教程。 这样的事情存在吗? doc.xpath(‘//table/tbody[@id=”threadbits_forum_251″]/tr’) 上面的代码将为我提供任何table ,其中有一个tbody子节点,其属性id等于“threadbits_forum_251”。 但为什么它从双//开始? 为什么最后有/tr ? 有关更多详细信息,请参阅“ Ruby Nokogiri解析HTML表II ”。 任何人都可以告诉我如何使用Nokogiri提取href , id , alt , src等? td[3]/div[1]/a/text()’ <— extracts text 我怎样才能提取其他东西?

在Ruby 2.0.0p353(基于rvm的安装)下安装Nokogiri 1.6.1失败(OSX Mavericks)?

我试图在Ruby和RVM下安装Nokogiri 1.6.1,但是失败了,出现以下错误: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/lmo0/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin13.0.0/ports/libxml2/2.8.0… OK Running ‘configure’ for libxml2 2.8.0… OK Running ‘compile’ for libxml2 2.8.0… OK Running ‘install’ for libxml2 2.8.0… OK Activating libxml2 2.8.0 (from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0)… Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-apple-darwin13.0.0/ports/libxslt/1.1.26… OK Running ‘configure’ for libxslt 1.1.26… ERROR, review ‘tmp/x86_64-apple-darwin13.0.0/ports/libxslt/1.1.26/configure.log’ to see […]

通过Nokogiri获取可查看的文字

我想打开一个包含Nokogiri的网页,并提取用户在浏览器中访问该页面时所看到的所有单词并分析单词频率。 使用nokogiri从html文档中获取所有可读单词的最简单方法是什么? 理想的代码片段将采用html页面(比如文件),并提供一系列单个单词,这些单词来自可读的所有类型的元素。 (无需担心javascript或css隐藏元素,从而隐藏单词;只需设计用于显示的所有单词都可以。)

如何让Nokogiri了解我的命名空间?

我有以下XML文档: @NOT_USED@ abcdefg 我想从中获取SessionIndex (即’abcdefg’)的内容。 我试过这个: XPATH_QUERY = “LogoutRequest[@ID][@Version=’2.0′][IssueInstant]/SessionIndex” SAML_XMLNS = ‘urn:oasis:names:tc:SAML:2.0:assertion’ SAMLP_XMLNS = ‘urn:oasis:names:tc:SAML:2.0:protocol’ require ‘nokogiri’ doc = Nokogiri::XML(xml) doc.xpath(XPATH_QUERY, ‘saml’ => SAML_XMLNS, ‘samlp’ => SAMLP_XMLNS) 但是我收到以下错误: Nokogiri::XML::SyntaxError: Namespace prefix samlp on LogoutRequest is not defined Nokogiri::XML::SyntaxError: Namespace prefix saml on NameID is not defined Nokogiri::XML::SyntaxError: Namespace prefix samlp on SessionIndex is not defined […]

为什么这个Nokogiri XPath的返回值为null?

我正在使用NOKOGIRI浏览网页。 我熟悉XPath,但我无法弄清楚为什么我的XPath无法获取特定行。 请参阅ruby代码。 我使用FireBug XML来validation我的XPath,所以我99%确定我的XPath是正确的。 require ‘nokogiri’ require ‘open-uri’ @searchURL = ‘http://www.umn.edu/lookup?UID=smit4562’ @xpath = ‘//html/body/p/table/tbody/tr/td[2]/table/tbody/tr[2]’ doc = Nokogiri::HTML(open(@searchURL)) puts ‘row should be = Email Address: smit4562@umn.edu’ puts ‘=> ‘ + doc.xpath(@xpath).to_s puts ‘is row emppty?’ puts ‘=> ‘ + doc.xpath(@xpath).empty?().to_s

使用Nokogiri在BR标签上拆分内容

我有一段代码我试图用nokogiri解析,看起来像这样: Link 1 (info1), Blah 1, Link 2 (info1), Blah 1, Link 3 (info2), Blah 1 Foo 2, 我可以使用以下内容访问td.j的源: data_items = doc.css(“td.j”) 我的目标是将每个行分成一个哈希数组。 我能看到的唯一逻辑分裂点是拆分BR,然后在字符串上使用一些正则表达式。 我想知道是否有更好的方法来做这个可能只使用nokogiri? 即使我可以使用nokogiri来吸取3行项目,它也会让我更容易,因为我可以在.content结果上进行一些正则表达式解析。 不知道如何使用Nokogiri抓住以br结尾的行 – 我应该使用xpath吗? 任何方向表示赞赏! 谢谢