ホームページ バックエンド開発 Python チュートリアル PythonでキャプチャしたWebページが文字化けする原因と解決策

PythonでキャプチャしたWebページが文字化けする原因と解決策

Mar 16, 2019 am 10:13 AM
python

この記事では、Python クロールで文字化けした Web ページが発生する原因と解決策を紹介します。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

Python2 を使用して Web ページをクロールすると、キャプチャされたコンテンツが文字化けして表示されることがよくあります。

これが発生する可能性が最も高いのは、エンコーディングの問題です。実行環境の文字エンコーディングが Web ページの文字エンコーディングと一致しません。

たとえば、utf-8 でエンコードされた Web サイトは Windows コンソール (gbk) にキャプチャされます。または、Mac/Linux ターミナル (utf-8) で gbk でエンコードされた Web サイトをスクレイピングします。ほとんどの Web サイトでは UTF-8 エンコーディングが使用されており、多くの人が Windows を使用しているため、この状況は非常に一般的です。

キャプチャしたコンテンツ内の英語、数字、記号は正しいように見えますが、文字化けが混在している場合は、基本的にこれが当てはまると判断できます。

PythonでキャプチャしたWebページが文字化けする原因と解決策

#この問題を解決するには、Web ページのエンコード方式に従って結果を Unicode にデコードしてから出力します。 Web ページのエンコードが不明な場合は、次のコードを参照してください。

import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
ログイン後にコピー

「ignore」パラメータは、デコードできない文字を無視するために使用されます。

ただし、この方法は常に機能するとは限りません。もう 1 つの方法は、正規表現を使用して Web ページ コードのエンコード設定を直接照合することです。

<meta>
ログイン後にコピー

文字化けを引き起こすエンコードの問題に加えて、見落とされがちな別の状況があります。ターゲット Web ページでは gzip 圧縮が有効になっています 。 Web ページを圧縮すると、送信されるデータが少なくなり、より速く開くことができます。ブラウザで開くと、Web ページのヘッダー情報に基づいてブラウザが自動的に解凍します。ただし、コードを使用して直接取得することはできません。したがって、Web ページのアドレスを開くのは正しいのに、プログラムでアドレスを取得しないのはなぜなのか、混乱するかもしれません。私自身もこの問題に騙されたことがあります。

この状況では、キャプチャされたコンテンツがほとんどすべて文字化けしており、表示することさえできません。

Web ページで圧縮が有効になっているかどうかを確認し、それを解凍するには、次のコードを参照できます。

import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
    buf = StringIO(content)
    gf = gzip.GzipFile(fileobj=buf)
    content = gf.read()
print content
ログイン後にコピー
教室でのプログラミングのサンプル天気予報シリーズ (クリックして表示) では、これらのコードを参照できます。 2つの問題で悩んでいる人は少なくありません。ここで特別に説明しておきます。

最後に、もう一つ「鋭い武器」を紹介します。最初から使っていると、上記の2つの問題が存在することさえわかりません。

これは

requests モジュールです。

同様に Web ページをクロールします。必要なのは次のことだけです。

import requests
print requests.get("http://some.web.site").text
ログイン後にコピー
エンコードの問題や圧縮の問題はありません。

これが私が Python を愛する理由です。

リクエスト モジュールのインストール方法については、前の記事を参照してください:

Python のサードパーティ モジュールをインストールする方法-クロッシンのプログラミング教室- 志胡コラム

pip install requests
ログイン後にコピー

以上がPythonでキャプチャしたWebページが文字化けする原因と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

携帯電話でXMLをPDFに変換する方法は? 携帯電話でXMLをPDFに変換する方法は? Apr 02, 2025 pm 10:18 PM

携帯電話でXMLをPDFに直接変換するのは簡単ではありませんが、クラウドサービスの助けを借りて実現できます。軽量モバイルアプリを使用してXMLファイルをアップロードし、生成されたPDFを受信し、クラウドAPIで変換することをお勧めします。クラウドAPIはサーバーレスコンピューティングサービスを使用し、適切なプラットフォームを選択することが重要です。 XMLの解析とPDF生成を処理する際には、複雑さ、エラー処理、セキュリティ、および最適化戦略を考慮する必要があります。プロセス全体では、フロントエンドアプリとバックエンドAPIが連携する必要があり、さまざまなテクノロジーをある程度理解する必要があります。

XMLを写真に変換する方法 XMLを写真に変換する方法 Apr 03, 2025 am 07:39 AM

XMLは、XSLTコンバーターまたは画像ライブラリを使用して画像に変換できます。 XSLTコンバーター:XSLTプロセッサとスタイルシートを使用して、XMLを画像に変換します。画像ライブラリ:PILやImageMagickなどのライブラリを使用して、形状やテキストの描画などのXMLデータから画像を作成します。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

XMLをMP3に変換する方法 XMLをMP3に変換する方法 Apr 03, 2025 am 09:00 AM

XMLをMP3に変換する手順には、XMLからオーディオデータを抽出します:XMLファイルを解析し、オーディオデータを含むBase64エンコード文字列を見つけ、バイナリ形式にデコードします。オーディオデータをmp3にエンコードします:mp3エンコーダーをインストールし、エンコードパラメーターを設定し、バイナリオーディオデータをmp3形式にエンコードし、ファイルに保存します。

XMLの形式を変更する方法 XMLの形式を変更する方法 Apr 03, 2025 am 08:42 AM

XML形式を変更する方法はいくつかあります。Atepadなどのテキストエディターを使用して手動で編集する。 XmlBeautifierなどのオンラインまたはデスクトップXMLフォーマットツールを使用して自動的にフォーマットします。 XSLTなどのXML変換ツールを使用して変換ルールを定義します。または、Pythonなどのプログラミング言語を使用して解析および操作します。元のファイルを変更してバックアップするときは注意してください。

独特の目標は関連していますか? 独特の目標は関連していますか? Apr 03, 2025 pm 10:30 PM

明確で明確なものは区別に関連していますが、それらは異なる方法で使用されます。明確な(形容詞)は、物事自体の独自性を説明し、物事の違いを強調するために使用されます。明確な(動詞)は、区別の動作または能力を表し、差別プロセスを説明するために使用されます。プログラミングでは、個別は、重複排除操作などのコレクション内の要素の独自性を表すためによく使用されます。明確なは、奇数や偶数の偶数を区別するなど、アルゴリズムまたは関数の設計に反映されます。最適化する場合、異なる操作は適切なアルゴリズムとデータ構造を選択する必要がありますが、異なる操作は、論理効率の区別を最適化し、明確で読み取り可能なコードの書き込みに注意を払う必要があります。

Apr 03, 2025 am 08:12 AM

XMLデータの変更は、手動で行うか、プログラミング言語とライブラリを使用することができます。手動の変更は、要素や属性の追加、変更、削除など、小規模なドキュメントの少量の変更に適しています。より複雑な変更については、XMLデータを処理するためのツールを提供するPythonのXml.domやJavaのjavaのjavax.xml.parsersなどのプログラミング言語とライブラリ。 XMLデータを変更するときは、その有効性を確保し、バックアップを作成し、正しいタグやプロパティを含むXML構文ルールに従ってください。

See all articles