Tag: nokogiri

打印一个XML文档,顶部没有XML标题行

我只是想找到如何使用Nokogiri::XML::Document或Nokogiri::XML::DocumentFragment创建Nokogiri::XML::DocumentFragment 。 或者,我想在Nokogiri::XML::DocumentFragment上使用xPath。 我无法确定如何做到这一点,但我成功解析了Nokogiri::XML::Document 。 我后来将解析和修改过的DocumentFragment在另一段XML中,但我真的被我认为是一些非常简单的事情所困扰。 就像尝试在doc或to_xml上执行to_xml一样,而不是在顶部包含那个xml行。 为什么这么难?

Nokogiri是针对LibXML 2.7.7版本构建的,但动态加载了2.7.3

在Rails 3中,我注意到每次调用框架时,无论是来自rake , rails server还是其他任何东西,我都会收到以下警告: Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.3 在Google上搜索会产生一些博客文章,所有post都建议使用显式库和包含路径重建Nokogiri。 例如: http://mrflip.github.com/2009-08/nokogiri-hates-libxml2-on-osx.html 但是,这并没有为我解决问题。 打字nokogiri -v给了我这个: — warnings: [] ruby: engine: mri version: 1.8.7 platform: i686-darwin10.4.0 libxml: loaded: 2.7.7 binding: extension compiled: 2.7.7 nokogiri: 1.4.4 这似乎表明我的构建运行正常,Nokogiri正在加载正确的库版本。 为什么Rails会抱怨? 我实际上找到了答案,我想我会在这里分享。 请参阅下面的答案。

使用Nokogiri提取链接时如何获取绝对URL?

我正在使用Nokogiri从页面中提取链接,但我想获得绝对路径,即使页面上的链接是相对路径。 我怎么能做到这一点?

使用Ruby / Mechanize(和Nokogiri)从HTML中提取单个字符串

我从论坛中提取数据。 我的脚本基于工作正常。 现在我需要从单个post中提取日期和时间(2009年12月21日,20:39)。 我无法让它发挥作用。 我使用FireXPath来确定xpath。 示例代码: require ‘rubygems’ require ‘mechanize’ post_agent = WWW::Mechanize.new post_page = post_agent.get(‘http://www.vbulletin.org/forum/showthread.php?t=230708’) puts post_page.parser.xpath(‘/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]/text()’).to_s.strip puts post_page.parser.at_xpath(‘/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]/text()’).to_s.strip puts post_page.parser.xpath(‘//[@id=”post1960370″]/tbody/tr[1]/td/div[2]/text()’) 我的所有尝试都以空字符串或错误结束。 我找不到有关在Mechanize中使用Nokogiri的任何文档。 Mechanize文档在页面底部显示: 使用Mechanize导航到需要刮擦的页面后,使用Nokogiri方法刮取它。 但有什么方法呢? 我在哪里可以通过样本和解释语法阅读它们? 我也没有在Nokogiri的网站上找到任何东西。

XPath轴,获取所有后续节点,直到

我有以下HTML示例: Foo bar lorem ipsum etc Bar baz dum dum dum poopfiddles 我想要提取’Foo bar’标题后面的所有段落,直到我到达’Bar baz’标题(’bar baz’标题的文字未知,所以不幸的是我无法使用bougyman提供的答案)。 现在我当然可以使用类似//h2[text()=’Foo bar’]/following::p但当然会抓住此标题后的所有段落。 因此,我可以选择遍历节点集并将段落推送到数组,直到文本与下一个标题的文本匹配为止,但说实话,这绝不像在XPath中那样酷。 有没有办法做到这一点,我错过了?