Pythonのurllib.urlopen()の呼び出しは、ブラウザが受け入れるURLでは動作しません。

StackOverflow https://stackoverflow.com/questions/1335439

  •  20-09-2019
  •  | 
  •  

質問

私は http://bitbucket.org/tortoisehg/stable/でのFirefoxを指している場合ウィキ/ホーム/リリースノートは、私はHTMLのページを取得し、に。しかし、私はPythonでこれをしようとした場合:

import urllib

site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes'
req = urllib.urlopen(site)
text = req.read()

私は、次の取得ます:

500内部サーバーエラー サーバーは、内部エラーや設定ミスが発生したため、リクエストを完了できませんでした。

私が間違って何をしているのですか?

役に立ちましたか?

解決

あなたは何も悪いことをしていない、ビットバケットは、(例えば水銀のクライアントを検出するために)一部のユーザーエージェントの検出を行います。ただ、それは持っていない場合(それを修正するユーザーエージェントを変更サブとしてurllib)。

あなたはこの問題に関するを埋める必要があります: http://bitbucket.org/jespern/ビットバケット/問題/新しい/

他のヒント

あなたは表面上、およびエラーページとして、間違って何もしないしている、彼らは何が起こっているかを説明することができるサーバのログを持つものだからあなたは、サイトの管理者に連絡してくださいと言います。幸い、ビットバケットのサイト管理者は、フレンドリーな集まりです!

ブラウザは別の方法を設定urllibは一方向に、セットヘッダのいくつかのヘッダーまたは組み合わせが存在する疑いなく、サーバー上の問題は、後者の場合にはくすぐられます。あなたは、ヘッダーは、例えば送信されている正確に何を見てみたいことがありFirefoxで放火犯で、あなたは正確にサーバーのバグを分離するまで、それらを再現。ユーザエージェントになるだろうか、いくつかは、そのバグをくすぐります-ishヘッダーを「受け入れる」最も可能性が高い。

このサーバは、ちょうどダウンしていたように見えます -

私はあなたが何も悪いことをやっているとは思いませんか?あなたのスクリプトは私のためにうまく働いた(「text」は、ブラウザに表示されたものと同じデータが含まれ)ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top