这个错误真的是好心塞,因为同样的代码,在别人的机器上可以运行,但不知道为什么我的就报这样的错
然而我的25行只是将获取到的源码打印
这个错几乎折磨了我一天一夜,在网上找了各种博客,试着照着他们的改了,然并卵。后来找到了一篇特别详尽的博客,http://www.crifan.com/unicodeencodeerror_gbk_codec_can_not_encode_character_in_position_illegal_multibyte_sequence/
本以为这回应该能解决了,结果。。。更伤心了
后来猜想既然其他人的可以运行,是不是我自己设置的问题,可是,我编码方式都是默认的啊!要了个截图一看,没想到还真是,这个要改成utf-8的才对,因为html默认编码是utf-8
好了,第一个网页爬虫就如此艰难的实现了!!其实代码很简单,只是编码那边真的搞得头都大了,不说了,上代码
# -*-coding:utf-8-*- # 注意:utf-8一定要写在第一行 <pre style="font-family: Consolas; font-size: 10.5pt; background-color: rgb(255, 255, 255);"><span style="background-color:#ffe4ff;">__author__</span> = <span style="color:#008000;"><strong>'taoZhang'</strong></span>import requestsimport reimport sysreload(sys)sys.setdefaultencoding('utf-8')type = sys.getfilesystemencoding()'''大致思路是:用request获取源代码,然后用正则表达式,匹配出我们想要的内容'''# 使用代理 让爬虫伪装成浏览器来访问 格式类似于字典,前面是key,后面是值headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36'}# html = requests.get('http://jp.tingroom.com/yuedu/yd300p/')html = requests.get('http://jp.tingroom.com/yuedu/yd300p/',headers = headers) #用上面的对象赋值html.encoding = 'utf-8'# gb18030TypeStr = unicodeTypeStr.encode("GB18030"); #打印源码 之前不能打印是因为Project encoding是gbk,而不是utf-8print html.text 结果截图: