2017-01-31 8 views
-1

urlがブラウザで動作するとき、requests.getがタイムアウトする原因は何ですか?requests.getはブラウザで即座に返されるurlに対してタイムアウトします

requests.get returns 403 while the same url works in browserで、User-Agentのマスキングについて説明していますが、私の問題は、TimeoutErrorが得られることです。とにかく試してみましたが、それは助けになりませんでした。

import requests 

def onemap_geocode(postalcode): 
    header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} 
    onemap_request = 'https://developers.onemap.sg/commonapi/search?searchVal=' + str(postalcode) + '&returnGeom=Y&getAddrDetails=N' 
    print(onemap_request) 
    response = requests.get(onemap_request,headers=header) 
    print('response obtained') 
    response_json = response.json 
    lat = response_json['results'][0]['LATITUDE'] 
    lon = response_json['results'][0]['LONGITUDE'] 

    return lat + ', ' + lon 

onemap_geocode(178880) 
+1

私は試してタイムアウトを取得しません。しかし、 'esponse_json = response.json'という行を' response_json = response.json() 'で更新する必要があります。 – Arount

+0

まあ、問題があなたの側にあるかもしれない、私はすぐに結果を得た – Shane

+0

私は私自身のネットワーク上の私の個人的なPCで結果を得ることができたので、仕事場のネットワークがどうにか応答をブロックしていると思われ始めている。しかし、ここでのテクニカルサポートは素晴らしいことではないので、API呼び出しを行うと失敗する原因を特定する必要がありますが、ヘッダマスキングを使用していてもブラウザで機能します。何か案は? –

答えて

0

はタイムアウトで大量に使用します。response.jsonメソッドを呼び出すときは、括弧が欠落している

response = requests.get(onemap_request,headers=header,timeout=100) 
0

response_json = response.json

。この行はresponse_json = response.json()に変更する必要があります。

あなたのコードは期待どおりに動作します。

関連する問題