python爬虫怎么改变响应的编码_Python爬虫编码问题?

python的编码确实是很蛋疼的东西,特别是在采集时候,用windows控制台来运行的更蛋疼一些,因为工作关系,我自己主要是用的cygwin来运行的。

你从知乎抓下来的代码经过BeautifulSoup处理之后应该是Unicode的,所以直接进行encode处理就ok了,我用的是2.7的,测试是没问题

print soup.prettify().encode('gbk','ignore')

但是你这个代码还是会有问题,比如你采的是gb2312的网页,打印出来也会是乱码。所以可以用chardet库进行万能网页解码及编码,python的编码大概就是将原始编码decode为Unicode,然后再encode为自己想要的编码,如果你没有安装chardet,那就pip install chardet就ok了,如果你跟我一样用的是cygwin就 python -m pip install chardet

# coding:utf-8

import requests,chardet

from bs4 import BeautifulSoup

headers={

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0',

}

url = 'http://www.zhihu.com/'

r = requests.get(url,headers=headers)

mychar=chardet.detect(r.content)['encoding']#获取抓取的网页编码

html = r.content.decode(mychar,'ignore')#解码为Unicode,也可以再直接encode为自己想要的编码

soup = BeautifulSoup(html,'html.parser')

print soup.encode('gbk','ignore')#将Unicode编码为gbk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值