下載樣式表,我通過下載的HTML頁面的一部分:如何分析/ HTML從
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('https://example.com/index.html'))
wiki = doc./('//*[@id="wiki"]/div[1]')
,我需要的樣式表,以便正確地顯示。它們包含在標題中,如下所示:
<!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>
...
和它們的命名可以更改。如何解析/下載樣式表的本地副本?
如果我把'/ path'改成'/ tmp' thyen,我得到'/usr/share/ruby/open-uri.rb:353:in'open_http':403 Forbidden(OpenURI :: HTTPError)'。如果我將'open'命令改爲'open(link [「href」],「User-Agent」=>「Mozilla/5.0(Windows NT 6.0; rv:12.0)Gecko/20100101 Firefox/12.0 FirePHP/0.7.1 「)'然後我得到'/usr/share/ruby/open-uri.rb:36:in'initialize':沒有隱式轉換爲字符串(TypeError)' –
如果你需要設置標題,你將不得不使用Net :: HTTP或機械化或類似的東西。我不相信open-uri支持這一點。但我不認爲這與問題直接相關。 看到這個網絡:: HTTP示例與標題:http://stackoverflow.com/questions/587559/how-to-make-an-http-get-with-modified-headers – mrbrdo
我剛剛嘗試與'wget'和它可以在沒有用戶代理字符串的情況下下載'css'文件。我認爲'head'中的一些其他鏈接(OP中未顯示)需要用戶代理。有沒有辦法讓你的腳本只下載css文件? –