爬虫编码问题

在获取网页时会遇到各种各样的编码问题,我们有不同的编码方式,但是在使用BeautifulSoup时,他有自动检测编码的功能,但是这样遍历一遍,知道编码也是一个很慢的过程。而且依然有可能出错。因此我们可以在实例化BeautifulSoup时,加上编码规则,这样就可避免错误。
首先我们先查看爬虫的页面的编码方式,使用下列代码即可获得

url = 'http://www.baidu.com'
>>> res = requests.get(url)
>>> soup = bs(res.content,'lxml')
>>> soup.original_encoding
'utf-8'
>>> soup = bs(res.content,'lxml',from_encoding = 'utf-8')
>>> soup
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta content="text/html;charset=utf-8" http-equiv="content-type"/><me

输出编码时,可以调用 BeautifulSoup 对象或任意节点的 encode() 方法,就像Python的字符串调用 encode() 方法一样:

soup.p.encode("latin-1")
# '<p>Sacr\xe9 bleu!</p>'

soup.p.encode("utf-8")
# '<p>Sacr\xc3\xa9 bleu!</p>'

引入解决编码问题

from bs4 import UnicodeDammit
>>> dammit = UnicodeDammit("Sacr\xc3\xa9 bleu!")
>>> print(dammit.unicode_markup)
Sacré bleu!
>>> dammit.original_encoding
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值