ホームページ バックエンド開発 Python チュートリアル Python が Web ページをクロールする際の文字セット変換問題の解決策の共有

Python が Web ページをクロールする際の文字セット変換問題の解決策の共有

Jun 16, 2016 am 08:43 AM
python キャラクターセット

質問:

Web ページを収集し、処理後に文字列をファイルに保存するか、データベースに書き込むことがあります。このとき、収集した Web ページのエンコーディングが gb2312 である場合、文字列のエンコーディングを指定する必要があります。データベースはutf-8です。何も処理せずにデータベースに直接挿入すると文字化けが発生する可能性があります(テストしていないため、データベースが自動的にトランスコードするかどうかはわかりません)。gb2312を手動で変換する必要があります。 utf-8にします。

まず、Python の文字はデフォルトで ASCII コードであることを知っています。もちろん、英語は問題ありません。中国語に遭遇すると、すぐにひざまずきます。

まだ覚えているかどうかはわかりませんが、Python で漢字を出力するときは、文字列の前に u を追加する必要があります。

print u"来搞基吗?"
ログイン後にコピー

このようにして、中国語を表示することができます。ここでの u の機能は、中国語を正しく表示できるように、次の文字列を Unicode コードに変換することです。
それに関連する unicode() 関数があり、その使用法は次のとおりです

str="来搞基"
str=unicode(str,"utf-8")
print str
ログイン後にコピー

と u の違いは、str を Unicode エンコードに変換するために Unicode が使用されることです。ここでの utf-8 は、test.py スクリプト自体のファイル文字セットです。アンシになる。
Unicode がキーです。以下に進みます

Baidu ホームページのクロールを開始します。訪問者が Baidu ホームページにアクセスして Web ページのソース コードを表示すると、その charset=gb2312 が表示されます。

import urllib2
def main():
  f=urllib2.urlopen("http://www.baidu.com")
  str=f.read()
  str=unicode(str,"gb2312")
  fp=open("baidu.html","w")
  fp.write(str.encode("utf-8"))
  fp.close()

if __name__ == '__main__' :
  main()
ログイン後にコピー

説明:
まず、urllib2.urlopen() メソッドを使用して Baidu ホームページを取得します。f はハンドルで、str=f.read() を使用してすべてのソース コードを str

に読み取ります。

明らかに、str には取得した HTML ソース コードが含まれています。Web ページのデフォルトの文字セットは gb2312 であるため、それをファイルに直接保存すると、ファイル エンコーディングは ansi になります。

ほとんどの人にとって、これで十分ですが、場合によっては gb2312 を utf-8 に変換したい場合もあります。

最初:
str=unicode(str,"gb2312") #ここでの gb2312 は str の実際の文字セットです。これを Unicode に変換します

その後:
str=str.encode("utf-8") #Unicode文字列をutf-8に再エンコードします

最後に:

ファイルに str を書き込み、ファイルを開いてエンコーディングのプロパティを確認すると、それが utf-8 であることがわかります。utf-8 のトランスコーディングが完了しました。


概要:

指定した文字セットに従って文字列を保存する必要がある場合は、次の手順があることを確認してください:

1: unicode(str, "元のエンコーディング") を使用して str を Unicode 文字列にデコードします

2: str.encode("指定された文字セット") を使用して、Unicode 文字列 str を指定した文字セットに変換します

3: str をファイルに保存するか、データベースに書き込みます。当然、エンコーディングはすでに指定されていますよね。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Scapy Crawlerを使用するときにパイプラインの永続的なストレージファイルを書き込めない理由は何ですか? Apr 01, 2025 pm 04:03 PM

Scapy Crawlerを使用する場合、パイプラインの永続的なストレージファイルを書くことができない理由は?ディスカッションデータクローラーにScapy Crawlerを使用することを学ぶとき、あなたはしばしば...

Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Python hourglassグラフ図面:可変未定義エラーを避ける方法は? Apr 01, 2025 pm 06:27 PM

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...

PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? PythonプロセスプールがTCPリクエストを同時に処理し、クライアントが立ち往生する理由は何ですか? Apr 01, 2025 pm 04:09 PM

Python Process Poolは、クライアントが立ち往生する原因となる同時TCP要求を処理します。ネットワークプログラミングにPythonを使用する場合、同時のTCP要求を効率的に処理することが重要です。 ...

Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Python functools.partialオブジェクトによって内部的にカプセル化された元の関数を表示する方法は? Apr 01, 2025 pm 04:15 PM

python functools.partialオブジェクトのpython functools.partialを使用してPythonを使用する視聴方法を深く探索します。

Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Apr 01, 2025 pm 05:24 PM

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

GoogleとAWSはパブリックピピイメージソースを提供していますか? GoogleとAWSはパブリックピピイメージソースを提供していますか? Apr 01, 2025 pm 05:15 PM

多くの開発者はPypi(PythonPackageIndex)に依存しています...

See all articles