2013-05-26 64 views
1

我試圖抓取一個網站,但我需要使用代理才能不被禁止。如何使用OpenURI代理?

proxies.each do |proxy| 
    proxy.delete '""' 
    break if @doc = Nokogiri::HTML(open(pre, :proxy => proxy)) rescue nil 
end 

我有一個proxies陣列中的工作代理列表。 pre是URL。我沒有迴應這個代碼,只是零。如果我用下面的代碼替換此,它的工作原理,但它有一個IP禁令的風險:

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

有什麼想法?

+0

你能共享陣列'proxies'?它看起來怎樣? –

+0

我確定它的格式爲'ip:port' –

+2

Nokogiri不關心代理或瞭解HTTP,因此這個問題甚至不應該提及它。問題在於你使用OpenURI。減少您的示例代碼,直到Nokogiri無法解決問題,並且問題仍然存在。重寫您的問題,以準確反映當時的代碼和問題。因爲你的問題只是表明你不知道你的代碼是如何工作的。 –

回答

1

問題出在你的代理定義的某個地方。不幸的是,因爲您沒有向我們展示您的代碼的完整示例,所以我們無法幫助您。

正確的定義文件:http://www.ruby-doc.org/stdlib-2.0/libdoc/open-uri/rdoc/OpenURI/OpenRead.html

+0

謝謝,我會檢查文檔。是的,我是這種工作的初學者。我從csv文件獲取代理,我將它們格式化爲'ip:port',然後將它們添加到代理列表中。我會盡快添加代碼示例。 –