2012-05-07 8 views
2

このコードは正常に動作し、htmlを読み込んでいました。 その後、サイトはread()のデータの提供を停止しました。エラーコードはありません。は、Pythonでurllib2を使用しています。サーバーによって検出され拒否されている

Webサーバーが異常な何かを検出したためです。 (私はユーザエージェントを設定する前にエラー403:悪い振舞いを持っていた)

フラグを立てるような顕著なシグネチャがありますか? 別のライブラリに切り替えるのが助かりますか?

私は疑わしいことはしていません。このライブラリを使ってページを読んだり、lynxブラウザを使ったりしても、私の動作に違いは見られません。あなたのprint文を考える

import urllib2 
opener = urllib2.build_opener() 
opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
search_url='http://www.google.com/?search=stackoverflow"' 
raw = opener.open(search_url) 
print raw.headers 
print raw.read() 
+2

多くのリクエストをすばやく送信していますか?サイトによってはそれを検出することができます。 –

+0

Googleは、多数のリクエストをすばやく連続して行っている場合は、結果を提供することを拒否しますが、通常、その場合はエラーページを提供していたと思います。 'ヘッダー 'も空ですか? –

+2

robots.txtを尊重することを検討しましたか? – geoffspear

答えて

2

、私はあなたが関係なく、ユーザーエージェントを設定する、私は私のシステムで同じことを実行し、それが動作Python2.x 上でこれをやっていると仮定します。デビッド・ロビンソンがここで何かするべきかもしれないと示唆したもの。別のノートで

私が個人的に使用している、次の例では、複数のユースケースの上に、

import urllib2 

req = urllib2.Request('http://www.voidspace.org.uk') 
response = urllib2.urlopen(req) 
the_page = response.read() 

複数回スニペットや、あなたのエラーが発生しましたことはありません。

+0

私は1時間のスペースで同じページで約10回読みました。ヘッダーは空ではありません。手がかりを探すにはどうすればいいですか? – Morgan

+0

可能であれば、別の場所/ ISPから同じことを行うことをお勧めします。特定のIP範囲で問題が発生することがよくあります。 あなただけのため、半時間で100回のリクエストでも問題にはなりません。 – subiet

+0

lynxブラウザまたはChromeブラウザから同じページを正常に取得できます。 Googleはこのスクリプトを間違いなく嫌う。私はステータスコード200成功btwを取得します。 – Morgan

0

検索エンジンをクロールするためにplain urllib2の代わりにmechanizeを使用してみてください。ブラウザの動作をよりよく模倣します。

関連する問題