2017-02-06 8 views
0

Я пытаюсь выполнить простой python. Фрагмент кода находится с этого сайта и с открытым исходным кодом. Цель состоит в анализе веб-страницы и извлечении некоторого текста на странице. Программа, как показано ниже, использует python3 и перенаправляет вывод в файл. Но файл не содержал правильную информацию, которую я хочу, то есть он не показывал китайские иероглифы, а не с помощью unicode, например «\ u514d \ u8d39 \ u4e0b \ u8f7d». Как я могу сделать это правильно?Для Python 3 программа не может отображать китайский charactor

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 cmd строка: python test.py> test.txt и проверьте файл txt – wason

ответ

0

Вашего CMD шрифт, вероятно, не поддерживает UTF-8 кодировки (более конкретно, китайские символы), поэтому он использует UTF последовательность, чтобы показать их.

Вы можете искать шрифт, который поддерживает (вы можете изменить шрифты из настроек, щелкнув значок cmd) или использовать IDLE python, который отображает символы utf-8.

+0

OK. И я хочу сохранить его в базе данных MySQL. Я попробую посмотреть, правильно ли он сохранен. – wason

+0

Должно быть. Строка будет сохранена как последовательность байтов последовательности utf, поэтому чтение позже будет просто вопросом форматирования. – Uriel

+0

Я не пытался установить IDLE или cmd. Я использую use_unicode = True, charset = "utf8", когда pymysql.connect и запись базы данных верны. – wason

 Смежные вопросы

  • Нет связанных вопросов^_^