代码之家  ›  专栏  ›  技术社区  ›  Joao Pereira

使用nokogiri和ruby on rails更改ref属性

  •  15
  • Joao Pereira  · 技术社区  · 16 年前

    我有一个带有链接的HTML文档,例如:

    <html>
      <body>
       <ul>
         <li><a href="http://someurl.com/etc/etc">teste1</a></li>
         <li><a href="http://someurl.com/etc/etc">teste2</a></li>
         <li><a href="http://someurl.com/etc/etc">teste3</a></li>
       <ul>
      </body>
    </html>
    

    我希望使用ruby on rails、nokogiri或其他一些方法,得到这样的最终文档:

    <html>
      <body>
        <ul>
          <li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste1</a></li>
          <li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste2</a></li>
          <li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste3</a></li>
        <ul>
      </body>
    </html>
    

    实现这一目标的最佳策略是什么?

    2 回复  |  直到 8 年前
        1
  •  30
  •   jdeseno    16 年前

    如果你选择使用Nokogiri,我认为这应该有效:

    require 'cgi'
    require 'rubygems' rescue nil
    require 'nokogiri'
    
    file_path = "your_page.html"
    doc = Nokogiri::HTML(open(file_path))
    doc.css("a").each do |link|
      link.attributes["href"].value = "http://myproxy.com/?url=#{CGI.escape link.attributes["href"].value}"
    end
    doc.write_to(open(file_path, 'w'))
    

    如果我没有搞错的话,rails会默认加载rexml,这取决于您要做什么,您也可以使用它。

        2
  •  1
  •   Jaswinder    8 年前

    下面是我为替换images src属性所做的工作:

          doc = Nokogiri::HTML(html)
           doc.xpath("//img").each do |img|
             img.attributes["src"].value = Absolute_asset_path(img.attributes["src"].value)
          end
          doc.to_html                  // simply use .to_html to re-convert to html