2015-06-10 20 views
14

Arama motoru yapmak istiyorum ve bazı web'deki eğiticiyi takip ediyorum. Ben ayrıştırma htmlPython 3 UnicodeDecodeError: 'charmap' codec'i bayt çözemez 0x9d

from bs4 import BeautifulSoup 

def parse_html(filename): 
    """Extract the Author, Title and Text from a HTML file 
    which was produced by pdftotext with the option -htmlmeta.""" 
    with open(filename) as infile: 
     html = BeautifulSoup(infile, "html.parser", from_encoding='utf-8') 
     d = {'text': html.pre.text} 
     if html.title is not None: 
      d['title'] = html.title.text 
     for meta in html.findAll('meta'): 
      try: 
       if meta['name'] in ('Author', 'Title'): 
        d[meta['name'].lower()] = meta['content'] 
      except KeyError: 
       continue 
     return d 

parse_html("C:\\pdf\\pydf\\data\\muellner2011.html") 

test etmek istiyorum ve onu() Ben kodlamak kullanarak Web üzerinde bazı çözümler gördüm hata

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 867: character maps to <undefined>enter code here 

alma. Ancak kodda encode() işlevinin nasıl ekleneceğini bilmiyorum. Biri bana yardım edebilir mi?

+0

İstisnaın ** tam ** izi nedir? –

cevap

30

Python 3'te, dosyalar sizin için metin açılır (Unicode'a çözülür); BeautifulSoup'a kod çözülmesinin ne demek olduğunu söylemenize gerek yoktur.

Verilerin kod çözümü başarısız olursa, dosya okunurken kodlayıcının kullanması için open() numaralı telefona ne demediğini söylemediyseniz; Bir encoding argümanla doğru codec ekleyin:

with open(filename, encoding='utf8') as infile: 
    html = BeautifulSoup(infile, "html.parser") 

aksi dosyası OS bağlıdır sistem varsayılan codec'i ile açılacak.

İlgili konular