2017-06-01 221 views
1

我想用open-uri打開一個url,當我從瀏覽器打開它時,Safari會將我帶到第二個頁面。但是,當我嘗試用open-uri打開它時,它不起作用。一分鐘後它說Net::ReadTimeout: Net::ReadTimeout。用我的瀏覽器打開網址需要一秒鐘,但它不適用於open-uri。我試圖增加最大超時時間,但它不起作用。即使瀏覽器打開它,打開Uri不會打開url

open(url).read 

這是我用來打開url的代碼,在代碼中它不起作用。

+0

什麼是網址? –

+0

@Josh Brody http://stats.nba.com/stats/commonallplayers/?LeagueID=00&Season=2016-17&IsOnlyCurrentSeason=1 –

+0

你是否將它作爲'http://stats.nba.com/stats/commonallplayers/? LeagueID = 00&Season = 2016-17&IsOnlyCurrentSeason = 1'或者只是'stats.nba.com/stats/commonallplayers/?LeagueID = 00&Season = 2016-17&IsOnlyCurrentSeason = 1'?是的,你必須指定協議。 –

回答

2

看起來他們正在保護他們的API免受模糊的請求。

`curl 'http://stats.nba.com/stats/commonallplayers?LeagueID=00&Season=2016-17&IsOnlyCurrentSeason=1' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ru;q=0.6' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'` 

會做得很好。

+0

是的,由於某種原因,這在瀏覽器以外不適用於我... –

+0

請參閱我的編輯。 :) –

+0

太棒了!但是,如何獲得我的代碼中的信息,因爲curl是一個終端命令,對吧? –