如何 parse/download 来自 HTML 的样式表

How to parse/download stylesheet from HTML

我正在通过以下方式下载 HTML 页面的一部分:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('https://example.com/index.html'))
wiki = doc./('//*[@id="wiki"]/div[1]')

我需要样式表才能正确显示它。它们包含在 header 中,如下所示:

<!DOCTYPE html>
<html lang="en" class="">
    <head>
    ...
    <link href="https://example.com/9f40a.css" media="all" rel="stylesheet" />
    <link href="https://example.com/4e5fb.css" media="all" rel="stylesheet" />
    ...
  </head>
  ...

并且它们的命名可以更改。我如何 parse/download 样式表的本地副本?

我不是 ruby 专家,但您可以按照以下步骤进行操作

  • 您可以使用 String 类型提供的 .scan(...) 方法来解析并获取 .css 文件名。 scan 方法将为您 return 一个数组样式表文件名。在 scan here
  • 上查找更多信息
  • 然后下载并存储 Net::HTTP.get(...) 的文件,例如 here

像这样:

require 'open-uri'
doc.css("head link").each do |tag|
  link = tag["href"]
  next unless link && link.end_with?("css")
  File.open("/tmp/#{File.basename(link)}", "w") do |f|
    content = open(link) { |g| g.read }
    f.write(content)
  end
end