2017-02-06 16 views
0

私は単純なPythonのエクササイズを試みています。コードスニペットは、このサイトとオープンソースのものです。目標は、Webページを解析して、ページ内のテキストを抽出することです。プログラムはpython3を使って以下のようになり、出力をファイルにリダイレクトします。しかし、ファイルには正しい情報が格納されていませんでした。つまり、 "\ u514d \ u8d39 \ u4e0b \ u8f7d"のようなユニコードではなく、中国語の文字が表示されませんでした。私はそれを正しく行うにはどうしたらいいですか?Python 3プログラムで中国語の文字を表示できません

import sys, urllib.request 
import traceback 
from bs4 import BeautifulSoup 
url = "http://appstore.huawei.com/more/all" 

def uprint(*objects, sep=' ', end='\n', file=sys.stdout): 
    enc = file.encoding 
    if enc == 'UTF-8': 
     print(*objects, sep=sep, end=end, file=file) 
    else: 
     f = lambda obj: str(obj).encode(enc, errors='backslashreplace').decode(enc) 
     print(*map(f, objects), sep=sep, end=end, file=file) 

def crawl(): 
    req = urllib.request.Request(url) 
    req.add_header('User-Agent', 'PyCrawler 0.2.0') 
    data = urllib.request.urlopen(req).read() 
    soup = BeautifulSoup(data, 'lxml') 
    items_entry = soup.find_all(class_="list-game-app dotline-btn nofloat")  
    for item in items_entry:   
     title_tag = item.find_all("h4", class_="title") 
     for title in title_tag: 
      title_A = item.find_all("a") 
      for title_a_item in title_A: 
       output = str(title_a_item.string)     
       uprint(output) 
    print(u"Finishing...") 

if __name__ == "__main__": 
    crawl() 
+0

これはどこで実行しましたか(コンソール/アイドル)? – Uriel

+0

@Uriel Eli Windows 7のコマンドライン:python test.py> test.txtそしてtxtファイル – wason

答えて

0

あなたのcmdフォントはおそらくutf-8エンコーディング(漢字)をサポートしていないため、utfシーケンスを使って表示します。

サポートしているフォント(設定から、アイコンのアイコンをクリックすることでフォントを変更できます)、またはutf-8文字を示すpythonのIDLEを使用できます。

+0

を確認してください。私はそれをMySQLデータベースに保存したいと思います。それが正しく保存されているかどうかを確認しようとします。 – wason

+0

する必要があります。文字列はutfシーケンスのバイトシーケンスとして保存されるため、後で読むことは書式設定の問題にすぎません。 – Uriel

+0

IDLEまたはcmdの設定を試しませんでした。 pymysql.connectとデータベースレコードが正しいときは、use_unicode = True、charset = "utf8"を使用します。 – wason

関連する問題