0

数時間「グーグルアウト」しようとしていた奇妙な問題があります。スタック
上の同様のトピックのソリューションも試しましたが、それでも肯定的な結果は得られませんでした。

Python urlopenを使用してCookieを設定するにはどうすればよいですか?
Python/urllib2でrssリダイレクトを処理する

だから、私は記事のセット全体をいくつかのウェブページからダウンロードしたいという場合があります。適切な内容のサブリンクは1つの番号だけで異なるため、範囲全体(1〜400 000)をループして、HTMLをファイルに書き込みます。ここで重要なのは、このWebページで適切なURLを取得するために、Cookieを再送信する必要があることです。また、 Pythonを使用してWebページにログインし、後で使用するためにCookieを取得する方法についての講義の後、私はこれをしました。

しかし、スクリプトがエラーを返すことがあります。

response = meth(req、response)
ファイル "/usr/lib/python3.1/urllib/request.py"、行468、http_response'http
'、request、response、code、msg、hdrs)
....
ファイル"/usr/lib/python3.1/urllib/request.py"、553行目、http_error_302 self.inf_msg + msg、headers、fp)
urllib.error.HTTPError:HTTPエラー302:HTTPサーバーがリダイレクトエラーを返しました。無限のループにつながります。
最後の30xエラーメッセージは次のとおりです

スクリプトは一般に正常に機能するため、この問題を再現するのは困難ですが、数千の「forループ」の後にランダムに発生します。

サーバーからのcurlouptutは次のとおりです。
$ curl -I "http://my.url/"
HTTP/1.1 200 OK
Date: Wed, 17 Oct 2012 10:14:13 GMT
Server: Apache/2.2.15 (Oracle)
X-Powered-By: PHP/5.3.3
Set-Cookie: Kuuxk=ae7s3isu2cEshhijte4nb1clk5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8

一部の人々は、機械化を使用するか、例外をキャッチしようと提案しましたが、これを行う方法がわかりません。他の人々は、エラーは間違ったCookie処理が原因であると言いましたが、urllib2を使用して「手動で」Cookieを取得および送信しようとしましたがadd_header('cookie', cookie)、同様の結果が得られました。私のforループと短い睡眠へのmabeyがスクリプトを時々失敗させるかもしれないかどうか疑問に思います
..Anwyay-どんな助けもありがたいです。

編集:
これが機能する可能性がある場合-例外をキャッチして無視してみる方法は?

編集:

このエラーを単に無視することで解決しました。すべてがうまくいくわけではありません。
使用しました

    試す:  
        #here open url  
    any_HTTPErrorを除く:  
        パス  

毎回url.open命令を使用します。

閉鎖されます。

4

1 に答える 1

0

別の解決策を提案させてください: HTTP ステータス コード 302 の意味Found redirection(参照: https://en.wikipedia.org/wiki/HTTP_302 )。

例えば: HTTP/1.1 302 Found Location: http://www.iana.org/domains/example/

ヘッダーを取得Locationして、この URL を取得してみてください。

8 つのリダイレクト ステータス コード (301-308) があります。Location301 <= ステータス コード <= 308 の場合、ヘッダーを使用できます。

于 2016-08-17T05:12:55.077 に答える