爬虫编码问题

来源:互联网 发布:阿里云创建快照 编辑:程序博客网 时间:2024/06/14 00:24

在获取网页时会遇到各种各样的编码问题,我们有不同的编码方式,但是在使用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
原创粉丝点击