【问题标题】:Edit img tags in html document with nokogiri ruby使用 nokogiri ruby​​ 编辑 html 文档中的 img 标签
【发布时间】:2015-09-25 07:02:11
【问题描述】:

我想使用 nokogiri 在 html 文档中编辑 img 标签。

我目前在文档中有以下 img 标签:

<img src="image1.jpg">

图片的命名不一致。我想要做的是将上述img 转换为以下内容:

<img src="/User/account/folder1/folder2/image1.jpg">

例如,我将/User/account/folder1/folder2/ 存储在一个变量中。

每个文档中的文档可以包含 1 到 20 个图像标签,但路径始终相同。

在转换结束时,我将获取修改后的 html 并将其存储到变量中

  doc = Nokogiri::HTML(open(file))

我可以打开文档,但我不确定如何进一步迭代它。

有人可以帮忙吗?

【问题讨论】:

  • 您是从 HTTP 服务器提供这些文件吗?它是否有权查看这些文件,因为通常为了安全起见,它不会。如果它看不到/打开它们,那么使用该页面的任何人都看不到它们,因为服务器将无法将文件发送到浏览器。

标签: ruby nokogiri


【解决方案1】:

最终实现了我想要的:

page = Nokogiri::HTML(open(file))
  page.css('img').each do |div|
    image = div.attribute("src")
    div.set_attribute("src", ("#{absolute_path}""#{image}") )
    puts div.attribute("src")
  end

  amended_page = page.to_html

值得注意的是,absolute_path 是一个在此之外设置的变量,通常类似于 User/account/folder/

【讨论】:

  • 我会使用 File.join(absolute_path, image) 因为它处理前导/尾随路径分隔符。
  • 如果在 Windows 系统上更改 HTML,路径分隔符将使用 File.join 使用“\”,这不是 HTML 路径的定义方式。相反,要么强制使用分隔符,要么使用 join('/') 和数组或类似的东西。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多