問題タブ [urllib2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonで正しい文字セットを使用して(!)Webページをダウンロードするには?
問題
Python を使用して Web ページのスクリーン スクレイピングを行う場合、ページの文字エンコーディングを知る必要があります。文字エンコーディングが間違っていると、出力がめちゃくちゃになります。
人々は通常、いくつかの基本的な技術を使用してエンコーディングを検出します。ヘッダーの文字セットまたはメタ タグで定義された文字セットを使用するか、エンコーディング検出器(メタ タグやヘッダーを気にしない) を使用します。これらの手法を 1 つだけ使用すると、ブラウザーで行った場合と同じ結果が得られない場合があります。
ブラウザは次のようにします。
- メタ タグは常に優先されます (または xml 定義)。
- メタタグに文字セットが定義されていない場合、ヘッダーに定義されたエンコーディングが使用されます
- エンコーディングがまったく定義されていない場合は、エンコーディング検出の時間です。
(うーん...少なくとも、ほとんどのブラウザーがそうしていると私は信じています。ドキュメントは本当に不足しています。)
私が探しているのは、ブラウザが行う方法でページの文字セットを決定できるライブラリです。この問題に対する適切な解決策を必要とするのは、私が初めてではないと確信しています。
解決策(まだ試していません...)
Beautiful Soup は、ドキュメントを Unicode に変換するために、次のエンコーディングを優先順に試します。
- スープ コンストラクターに fromEncoding 引数として渡すエンコーディング。
- ドキュメント自体で検出されたエンコーディング: たとえば、XML 宣言または (HTML ドキュメントの場合) http-equiv META タグなど。Beautiful Soup がドキュメント内でこの種のエンコーディングを検出すると、ドキュメントを最初から再度解析し、新しいエンコーディングを試します。唯一の例外は、エンコーディングを明示的に指定し、そのエンコーディングが実際に機能した場合です。その場合、ドキュメント内で見つかったエンコーディングはすべて無視されます。
- ファイルの最初の数バイトを調べることによってスニッフィングされたエンコーディング。この段階でエンコーディングが検出された場合、それは UTF-* エンコーディング、EBCDIC、または ASCII のいずれかになります。
- インストールされている場合は、chardet ライブラリによってスニッフィングされたエンコーディング。
- UTF-8
- Windows-1252
python - urllib2:フォームを送信してからリダイレクトする
私の目標は、フォームをPOSTしてから、ユーザーを出力されるものにリダイレクトするポータブルurllib2ソリューションを考え出すことです。POSTingの部分は単純です。
dataリクエストタイプをPOSTに設定します。さて、私が気にかけるべきすべてのデータはresponse.info()&から来ていると私は思うresponse.geturl()。のメソッドのself.redirect(response.geturl())内部を実行する必要があります。get(self)webapp.RequestHandler
しかし、ヘッダーをどうすればよいですか?私が見落とした他の何か?コードスニペットは高く評価されています。:)
TIA。
編集:これが私が思いついた素朴な解決策です。リダイレクトしますが、リモートサーバーは以前にPOSTされたフォームに一致するものがないことを示すエラーを表示します。
python - urllib2を使用して大きなバイナリファイルをファイルにストリーミングする
次のコードを使用して、インターネットからローカルファイルに大きなファイルをストリーミングします。
これは機能しますが、ダウンロードが非常に遅くなります。より速い方法はありますか?(ファイルは大きいので、メモリに保持したくありません。)
python - 複雑なpython Webスクレイピングスクリプトに「catch-all」例外句を適用する方法は?
CSV 形式の 100 の Web サイトのリストがあります。すべてのサイトは、7 列の大きなテーブルを含め、同じ一般的な形式を持っています。このスクリプトを作成して、各 Web サイトの 7 列目からデータを抽出し、このデータをファイルに書き込みました。ただし、以下のスクリプトは部分的に機能します。(スクリプトの実行後に) 出力ファイルを開くと、98 回の書き込みしか表示されないため、何かがスキップされていることがわかります (明らかに、スクリプトはいくつかの例外も登録します)。このコンテキストで「キャッチ例外」を実装する方法についてのガイダンスをいただければ幸いです。ありがとうございました!
戻る:
python - Firefox のソースに表示されるテーブル フィールドが urllib2 にないのはなぜですか?
urllib2 から受け取った html には、Firefox で URL のソースを表示したときに確認できる数十のデータ フィールドが欠落しています。アドバイスをいただければ幸いです。これは次のようになります。
FireFoxビューソースから:
urllib2 から html を返す:
python - Pythonで認証済みURLを直接要求するにはどうすればよいですか
urllib2 を使用して認証済みのページにアクセスしたい。直接行うためのハックがあることを願っています。何かのようなもの:
そうでない場合、認証を使用するにはどうすればよいですか?
python - サイトのレルムとURIを知るにはどうすればよいですか
Pythonのurllib2を認証で使用したいのですが、URLのレルムとURIが必要です。どうすれば入手できますか?
ありがとう
python - httpストリームからの非ブロッキング読み取り/ログ
HTTPストリームに接続し、消費したテキストデータをログに記録するクライアントがあります。
ストリーミングサーバーにHTTPGETリクエストを送信します...サーバーは応答してデータを継続的に公開します...テキストを公開するか、定期的にping(テキスト)メッセージを送信します...接続を閉じることはありません。
消費するデータをノンブロッキングで読み取ってログに記録する必要があります。
私はこのようなことをしています:
私の質問は次のとおり
です。ストリームが継続している場合、これはブロックされますか?
各チャンクで読み取られるデータの量と、それを指定/調整できますか?
これはhttpストリームを読み取り/ログに記録するための最良の方法ですか?
python - urllib.urlopenを呼び出すときのトレース/BPTトラップ
何らかの理由で、を呼び出すときにトレース/BPTトラップエラーが発生しますurllib.urlopen。私は両方を試しましたがurllib、urllib2同じ結果になりました。エラーをスローするコードは次のとおりです。
このコードは、web.pyを使用してCherryPyWebサーバーで実行されていることを追加する必要があります。
誰かがトレースバックを要求しました。残念ながら、何もありません。Trace/BPT trapが端末に出力され、処理が終了します。例えば
編集:OS X 10.6.2、web.py 0.33、Python 2.6.2、CherryPy3.1.2を実行しています。