如何 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
我正在通过以下方式下载 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