编码错误
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' '))