2016-06-21 13 views
0

因此,我有一個nokogiri網絡刮在我的本地機器上完美運行。使用代理與鐵路網址鏈接

但是,當我嘗試在我的生產環境中運行Web Scrape時,會出現403錯誤代碼。

我相信這是下降到網站擋住了我我的服務器的IP(可能是因爲以前人們使用的IP封鎖它)

是否有可能路線從我的Web服務器通過代理服務器的引入nokogiri請求?如果是這樣,我會怎麼做呢?

這是我現在的代碼。

doc = Nokogiri::HTML(open(URL HERE, 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.854.0 Safari/535.2')) 
+0

你從哪裏得到403?從您試圖抓取的網站上找到? – thesecretmaster

+0

確實我是,我的印象是他們已經阻止了服務器的IP地址,這就是爲什麼我想到了一個代理 –

+0

你可以使用Mechanise和代理嗎?看[這裏](http://stackoverflow.com/questions/18348673/how-do-i-configure-a-ruby-mechanize-agent-to-work-through-the-charles-web-proxy)或[這裏](https://gist.github.com/emergent/3983870) –

回答

0

其實,你可以簡單地使用OpenURI open方法的:proxy參數。

open(*rest, &block) 
#open provides `open' for URI::HTTP and URI::FTP. 

... 

The hash may include other options, where keys are symbols: 
:proxy 

Synopsis:  
:proxy => "http://proxy.foo.com:8000/" 
:proxy => URI.parse("http://proxy.foo.com:8000/") 

If :proxy option is specified, the value should be String, URI, boolean or nil. 

此外,作爲一般的考慮(現爲繁瑣的),你應該尋找周圍報廢內容的選擇,尤其是如果它是定期進行。像支持的API或其他來源。如果您當前的服務器IP被阻止,則代理服務器也會發生同樣的情況。

+0

任何好代理的任何想法? –

+1

可能你不會得到很好的免費代理。免費代理隨機工作,偶爾停止工作,等等。你可以和他們一起工作,但不能用於那些應該可靠的東西。對於可靠的代理,你應該搜索付費服務,有很多(部分),我不能判斷哪些是好的或壞的。 –

+1

另外,作爲一個普遍的考慮(現在很乏味),你應該搜索關於報廢內容的替代方案,特別是如果定期完成。像支持的API或其他來源。如果您當前的服務器IP被阻止,代理服務器也會發生同樣的情況。 –