我在下载和处理网页时遇到问题。我想做的是:
我的问题是字符编码,因为我
<title>csonthãᄅjas termãᄅsek - wikipãᄅdia</title>
而不是
^{pr2}$几乎每个重音符号和“奇怪”字符都存在这个问题,比如áűóüő
。。。当我简单地把它写成一个字符串,它就起作用了。在
print 'csonthéjas termések - wikipédia'
Chardet说它有ISO-8859-2字符编码,但是当我更改脚本编码时没有任何变化。当我试图将网页编码或解码为任何字符集时,我收到一个错误(“无效的连续字节”或“序号不在范围(128)”内”
我尝试了许多编码,不同的浏览器代理,用chardet检测编码,然后使用这些信息,但没有解决我的问题。我知道这是一个简单的问题,但我找不到正确的答案。我使用Windows8.1和Python2.7.6
我的代码如下(我试图删减的是尽可能简单):
#!/usr/bin/python
# -*- coding: ISO-8859-2 -*-
def url_get(url_input): #Get the webpage
"Get the webpage"
import mechanize
url = url_input
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
#User-agent','Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)
br.addheaders = [('user-agent', ' Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3'),
('accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')]
result = br.open(url).read().lower()
print result
import chardet
rawdata = result
detection = chardet.detect(rawdata)
charenc = detection['encoding']
print charenc
return result
text = url_get('http://hu.wikipedia.org/wiki/Csonth%C3%A9jas_term%C3%A9sek')
print 'csonthéjas termések - wikipédia'
页面显示为UTF-8格式。带上你的
text
并打印text.decode('utf-8')
。当我使用requests
模块阅读页面内容时,这对我很有用。在您需要删除
lower()
调用,因为转换为小写可能会损坏UTF-8编码的文本。如果要转换为小写,请在解码后调用lower()
。在使用
# -*- coding
行时,设置脚本文件的编码。这对脚本文件读取的数据没有影响。要处理不同编码的文本数据,需要在读入数据后对其进行解码。在相关问题 更多 >
编程相关推荐