lxml未找到编码:'uft-8'

2024-05-13 05:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个非常奇怪的错误,让我们看看细节:

ts.py文件:

#-*- coding: utf-8 -*-
import requests
from lxml import html

headers = {
          'Host':'www.baidu.com',
          'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36',
          }

def get_html(url,enable_proxy=None):
    r = requests.get(url,headers=headers)
    parser = html.HTMLParser(encoding='utf-8')
    return html.document_fromstring(r.text, parser=parser)

p = get_html('http://www.baidu.com')

print p.xpath(u'//*[@id="setf"]/text()')[0].encode('utf-8')

如果我只是执行ts.py,lxml工作得很好。

但是!当我将get_html放入另一个文件时出现错误,请参阅以下内容:

时间码:

#-*- coding: utf-8 -*-
import requests
from util import get_html

p = get_html('http://www.baidu.com')
print p.xpath(u'//*[@id="setf"]/text()')[0].encode('utf-8')

实用程序:

#-*- coding: utf-8 -*-
import requests
from lxml import html

headers = {
          'Host':'www.baidu.com',
          'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36',
          }

def get_html(url, enable_proxy=None):
    r = requests.get(url,headers=headers)
    parser = html.HTMLParser(encoding='uft-8')
    return html.document_fromstring(r.text, parser=parser)

tun ts.py输出:

Traceback (most recent call last):
  File "C:\Users\mithril\Desktop\1\ts.py", line 8, in <module>
    p = get_html('http://www.baidu.com')
  File "C:\Users\mithril\Desktop\1\util.py", line 15, in get_html
    parser = html.HTMLParser(encoding='uft-8')
  File "E:\Python27\lib\site-packages\lxml\html\__init__.py", line 1662, in __init__
    super(HTMLParser, self).__init__(**kwargs)
  File "parser.pxi", line 1597, in lxml.etree.HTMLParser.__init__ (src\lxml\lxml.etree.c:99825)
  File "parser.pxi", line 792, in lxml.etree._BaseParser.__init__ (src\lxml\lxml.etree.c:92549)
LookupError: unknown encoding: 'uft-8'

我的环境:

  • Windows 7 x64
  • Python2.7
  • 来自here的lxml-3.3.1

我测试了python 2.732位和64位,结果相同。


Tags: pyimportcomparsergethtmlwwwline