【问题标题】:How to remove link tag from image using Nokogiri如何使用 Nokogiri 从图像中删除链接标签
【发布时间】:2012-10-06 16:51:42
【问题描述】:

我正在使用 Nokogiri 解析 HTML 文档。该代码包含几个这样的图像:

 <a href="http://url_to_big_photo.jpg"><img alt="alternative-text" border="0" height="427" src="http://url_to_my_photo.jpg?" title="Image Title" width="640"></a>

我正在尝试将该图像保存到我的 S3 存储中,更改样式并删除链接。所有图片都有css标签“.post-body img”。

到目前为止,我得到的最接近的是:

@doc.css(".post-body img").each do |image|
    @new_photo = Photo.create!(
       #Params required to save and upload the photo to S3.
        ...
        ...
       )
     # The url of the photo upload to S3 is @new_photo.photo.url
    image['src']= @new_photo.photo.url
    image['class'] = "my-picture-class"
    image.parent['src] = '#'
    puts image.parent.content
    @doc.to_html
  end

这会删除大照片的链接,但显然这不是一个好的解决方案。

我尝试使用 image.parent http://rubyforge.org/pipermail/nokogiri-talk/2009-June/000333.html 的建议替换父级,但没有执行任何操作,并且 image.parent = image 返回“无法重新父节点(RuntimeError)”

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    要将邮件列表示例转换为适用于您的情况,您必须记住 node 是他们试图摆脱的节点,在您的情况下是 image.parent

    所以你应该尝试而不是image.parent['src] = '#'

    link = image.parent
    link.parent << image
    link.remove
    

    编辑:

    实际上,上面的代码可能会将所有图像移动到包含链接的任何元素的底部,因此请尝试以下操作:

    link = image.parent
    link.replace(image)
    

    【讨论】:

    • 谢谢。该解决方案会删除链接,但会将所有图像移动到文档的底部,有没有办法避免这种情况?
    • 好的。请参阅我的编辑。我自己没有尝试过,但是这里记录了替换方法:nokogiri.org/Nokogiri/XML/Node.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2022-11-20
    • 2019-10-11
    • 2020-05-28
    • 2016-01-23
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多