编码错误

2018-11-21  本文已影响0人  AlastairYuan

def savepage(browser, filepath, pagename):

    try:

        textContent = browser.find_element_by_xpath('//html').get_attribute('outerHTML')

        str_utf8 = textContent.encode("UTF-8")

        textContent = str_utf8.decode('UTF-8','strict')

        pagepath = filepath +'//'+ pagename+'.html'

        fp =open(pagepath,"w",encoding='UTF-8');

        fp.write(textContent);

        fp.close()

    except Exception as excpt:

    print(excpt)


简单比较 BeautifulSoup 和 Xpath 的性能

BeautifulSoup 这碗美味汤确实是美味可口,但是一碗好汤煲制时间和用料上面都更加花费,这无可厚非。Xpath 相对来说可能语义性没有前者强,但总体也是 user-friendly,也很好用,功能十分强大,最重要的是它的爸爸 lxml 使用 C 编写的,速度自然就不必说了,如果在很追求效率和资源节约的情况下,熟练运用 Xpath 会使你感到无尽的愉悦。

https://blog.csdn.net/randomparty/article/details/80144700



认识常见编码

  GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码

  GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名

  cp936:中文本地系统是Windows中的cmd,默认codepage是CP936,cp936就是指系统里第936号编码格式,即GB2312的编码。

    (当然有其它编码格式:cp950 繁体中文、cp932 日语、cp1250 中欧语言。。。)

  Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

  UTF-8 (8-bit Unicode Transformation Format)是最流行的一种对 Unicode 进行传播和存储的编码方式。它用不同的 bytes 来表示每一个代码点。ASCII 字符每个只需要用一个 byte ,与 ASCII 的编码是一样的。所以说 ASCII 是 UTF-8 的一个子集。

在开发Python程序的过程中,会涉及到三个方面的编码:

Python程序文件的编码

Python程序运行时环境(IDE)的编码

Python程序读取外部文件、网页的编码

chardet模块

chardet是一个非常优秀的编码识别模块。

通过pip 安装:

pip install chardet

from chardet import detect

detect(teststr)


#!/usr/bin/env python

#coding=utf-8 

s="中文"

ifisinstance(s, unicode):

#s=u"中文" 

prints.encode('gb2312')

else:

#s="中文" 

prints.decode('utf-8').encode('gb2312')


`UnicodeEncodeError: 'gbk' codec can't encode character '\xa0'

解决办法:用 ‘’ 来替换 ‘\xa0’ ( ):

print(item['detail'][i].replace(u'\xa0 ',u' '))

上一篇 下一篇

猜你喜欢

热点阅读