Articles of nokogiri

使用Nokogiri查找包含的标记

我有一个像html元素: 我想通过id搜索这个元素,但似乎nokogiri被[]搞糊涂了。 我尝试着: doc.css(“#spam[#{eggs.id}]”) 但无济于事。

如何按属性值搜索

我有以下XML文档: foo1 foo2 data1 data2 foo3 foo4 我只需要抓取type = “foo:elementType1″的元素。 我尝试过这个,但是我得到了空洞的结果。 elems = doc.search(“//elements[@type=’foo:elementType1′]”) 我错过了什么?

安装nokogiri时出错(1.5.2)

当我尝试在rails项目上运行ruby时出现错误: An error occurred while installing nokogiri (1.5.2), and bundle cannot continue. Make sure that ‘gem install nokogiri -v 1.5.2 succeed before building. 我正在研究Ubuntu 10.10 我的同事在Windows / RVM上使用并没有这个问题。 编辑: gem_make.out /opt/bitnami/ruby/bin/ruby 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 […]

如何使用nokogiri和rubyzip编辑docx

我正在使用rubyzip和nokogiri的组合来编辑.docx文件。 我正在使用rubyzip来解压缩.docx文件,然后使用nokogiri来解析和更改word / document.xml文件的主体但是有时候我最后关闭rubyzip它会破坏文件而我无法打开它或者修理它。 我在桌面上解压缩.docx文件并检查word / document.xml文件,并将内容更新为我更改为的内容,但所有其他文件都搞砸了。 有人可以帮我解决这个问题吗? 这是我的代码: require ‘rubygems’ require ‘zip/zip’ require ‘nokogiri’ zip = Zip::ZipFile.open(“test.docx”) doc = zip.find_entry(“word/document.xml”) xml = Nokogiri::XML.parse(doc.get_input_stream) wt = xml.root.xpath(“//w:t”, {“w” => “http://schemas.openxmlformats.org/wordprocessingml/2006/main”}).first wt.content = “New Text” zip.get_output_stream(“word/document.xml”) {|f| f << xml.to_s} zip.close

Nokogiri解析

我有一些XML: xml = <<-EOT Sport Mobile Flowers EOT 并希望解析它: id=[] text=[] doc = Nokogiri::XML(xml) doc.search(‘advcampaign_categories’).each do |cat| c = cat.at(‘category’) text << c.text id << c['id'] end h = Hash[text.zip id] 我的目标是获得像{sport:85, mobile:79..etc}这样的哈希值。 这段代码的问题是它只返回一个元素sport:85 。 有什么建议?

如何使用Nokogiri gem获取innerHtml

例如我有html: bla bla bla bla 我需要获得div.item的内部html: bla bla bla bla 我知道我可以使用: doc.css(“div.item:first”).text text方法返回没有任何html标签的干净文本 但是我应该怎样做才能获得div.item的内部html? 尝试: doc.css(“div.item:first”).html 但是没有用,文档也无济于事 有任何想法吗?

如何安装Nokogiri Gem for Windows

我对nokogiri的gem有这个问题: 无法打开库’C:\ Ruby187 \ lib \ ruby​​ \ gems \ 1.8 \ gems \ nokogiri-1.4.6-x86-mingw32 \ ext \ nokogiri \ libxml2.dll’:未知 我读到我必须尝试1.5.0.beta3版本。 但是,当我跑 C:\Users\t3en4>gem install nokogiri –pre Fetching: nokogiri-1.5.0.beta.4.gem (100%) ERROR: Error installing nokogiri: The ‘nokogiri’ native gem requires installed build tools. Please update your PATH to include build tools or download the DevKit from […]

通过与Savon的SOAP调用,与Nokogiri一起阅读回复

我和萨文打了一个肥皂电话。 这很好,并给出以下响应: string string 现在我想从响应中取出所有字符串元素。 但我无法让它发挥作用。 def query(params=nil) client = Savon::Client.new do wsdl.document = “http://www.kirupafx.com/WebService/TopMovies.asmx?wsdl” end response = client.request :get_top10 if response.success? xml = Nokogiri::XML(response.to_xml) print “Until here oké!” xml.search(‘//GetTop10Result’).each do |result| print “How are you Ruby?” @result[result.at(‘string’).inner_text] = result.at(‘string’).inner_text end else raise “Error!” end 但是他从来没有打印过我漂亮的“你是ruby怎么样?” 有人能帮助我吗? 我做错了什么?

使用Nokogiri和Mechanize获取,访问和限制链接数量?

我正试图从CNN.com上抓下五个最新的故事并检索他们的链接以及每个故事的第一段。 我有这个简单的脚本: url = “http://edition.cnn.com/?refresh=1” agent = Mechanize.new agent.get(“http://edition.cnn.com/?refresh=1”).search(“//div[@id=’cnn_maintt2bul’]/div/div/ul/li[count(*)=3]/a”).each do |headline| article = headline.text link = URI.join(url, headline[:href]).to_s page = headline.click(link) paragraph1 = page.at_css(“.adtag15090+ p”).text puts “#{article}” puts “#{link}” puts “#{paragraph1}” puts “\n” end 此代码无效,因为无法识别click方法。 它会带来这个错误: cnn_scraper.rb:10:in `block in ‘: undefined method `click’ for # (NoMethodError) CNN.com上所有文章的第一段都有选择器.adtag15090+ p 。 还要注意它正在解析所有文章,但我只想要五个。 关于如何使用Nokogiri和Mechanize获得前五个及其第一段的任何想法?

如果只有一个字段为粗体,如何解析一行? Nokogiri和Ruby

所以我有这个代码收集我需要的所有产品信息: # get main page page = agent.get “http://www.site.com.mx/tienda/index.php” search_form = page.forms.first search_result = agent.submit search_form doc = Nokogiri::HTML(search_result.body) rows = doc.css(“table.articulos tr”) i = 0 details = rows.collect do |row| detail = {} [ [:sku, ‘td[3]/text()’], [:desc, ‘td[4]/text()’], [:qty, ‘td[5]/text()’], [:qty2, ‘td[5]/p/b/text()’], [:price, ‘td[6]/text()’] ].collect do |name, xpath| detail[name] = row.at_xpath(xpath).to_s.strip end i = […]