问题描述

用python写爬虫,很多时候我们会先在cmd下先进行尝试。

运行爬虫之后,肯定的,我们想看看爬取的结果。

于是,我们print...

运气好的话,一切顺利。但这样的次数不多,更多地,我们会遇到这样的错误:

UnicodeEncodeError: 'gbk' codec can't encode character

好吧,回去检查网页的编码格式:gb2312

代码中也添加了:r.encoding = 'gb2312'

看不出哪里出了问题,应该没问题的啊!

代码如下:

import requests

from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)

r.encoding = 'gb2312'

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

# 打印

print(soup.get_text(strip=True))

解决办法:

A.改变控制台编码

网上查,都说是cmd控制台的问题。默认控制台编码gbk

好吧,那就改一下控制台编码,改成gbk的超集gb18030

试试看再说。。。嗯,很好,无报错,但是有乱码,算是解决了问题!

代码如下:

import requests

from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)

r.encoding = 'gb2312'

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

# 改变控制台编码

import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

# 打印

print(soup.get_text(strip=True))

B.直接改字符编码

顺着这个思路,再一想,改控制台编码那还不如直接改字符编码:r.encoding = 'gb18030'

试试看再说。哎,没问题了,无报错,无乱码,完美解决!

代码如下:

import requests

from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)

r.encoding = 'gb18030' # 注意网页编码是 gb2312

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

# 打印

print(soup.get_text(strip=True))

总结

从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。

各种编码字符数目

gb2312: 7445 -- 在windows中的代码页是CP936

gbk: 21886 -- 在windows中的代码页是CP936

gb18030: 27484 -- 在windows中的代码页是CP54936

gb13000: 等同于unicode

显然,gb18030 是 gb2312,gbk 的超集

因此,解决问题的思路就是:

如果控制台中,打印中文文本出问题,那就用它的编码的超集进行编码。

python登录网页后打印_python爬虫中文网页cmd打印出错问题解决相关推荐

  1. python自带网页解析器_Python爬虫Chrome网页解析工具-XPath Helper

    之前就说过Python爬虫中Xpath的用法,相信每一个写爬虫.或者是做网页分析的人,都会因为在定位.获取XPath路径上花费大量的时间,在没有这些辅助工具的日子里,我们只能通过搜索HTML源代码,定 ...

  2. python网页结构分析图_Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存中, ...

  3. python脚本自动qq签到_Python爬虫实现自动登录、签到功能 附代码

    这篇文章主要介绍了Python爬虫实现自动登录.签到功能的代码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 前几天在一个素材网站上下载东 ...

  4. python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它

    不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据.这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目 ...

  5. python批量下载网页文件夹_Python抓取网页批量下载文件方法初探(正则表达式+BeautifulSoup) (转)...

    最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法 ...

  6. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  7. python 获取html js 变量_Python爬虫与反反爬虫实践

    因为要收集数据,所以打算自己撸一个爬虫,期间碰到网站的反爬措施,让我非常头疼,在此记录一下. 基础 爬虫的基础是不需要自己手动通过浏览器访问网页,而是通过程序构造网络请求,获取网站返回的结果.例如使用 ...

  8. python scrapy框架 简书_python爬虫框架——Scrapy架构原理介绍

    说起写爬虫,大多数第一时间想到的就是python了.python语法简洁明了,加上及其丰富好用的库,用它来写爬虫有天然的优势. 之前学python的时候也用requests+lxml写过几个爬虫玩,但 ...

  9. python信息检索和评价系统_Python爬虫实现的微信公众号文章下载器

    所以我就想有什么方法能否将这些公众号文章下载下来.这样的话,看起来也方便.但是网上的方法要么太复杂(对于我这个爬虫入门新手来说),要么付费. 但我的需求其实却很简单--"方便的查找 / 检索 ...

最新文章

  1. python编程超市购物系统_python实现简单购物车系统(练习)
  2. 重磅直播|大规模点云可视化技术
  3. [ 一起学React系列 -- 11 ] React-Router4 (1)
  4. mysql有两个结果集,MySQL:两个结果集的差异
  5. java双链表基本方法_Java数据结构之双端链表原理与实现方法
  6. VTK:可视化之ShepardInterpolation
  7. SQL-33 创建一个actor表,包含如下列信息
  8. 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁
  9. linux7如何进入紧急模式,CentOS7开机进入紧急模式EmergencyMode的解决办法
  10. IIS OCIEnvCreate failed with return code -1
  11. SpringCloud 从菜鸟到大牛之二 服务注册与发现 Sping Cloud Eureka
  12. 期待!华为P40渲染图再曝光:前置打孔双摄+6.5英寸大屏
  13. 如何使用 Apple Watch 拨打电话?
  14. 如何在Mac上恢复格式化的相机卡
  15. paip.python错误解决12
  16. 4600u黑苹果 r5_黑苹果集显hd4400、hd4600显卡Clover引导驱动方法教程
  17. 虚幻4 配置打包安卓
  18. 给传智播客的一份感谢信
  19. 【进程、线程和进程间通信】(三)进程间通信
  20. Android ViewGroup介绍+实例,大厂架构师经验分享

热门文章

  1. Springboot项目开发(三)文件结构(个人理财系统)
  2. C# ——SaveFileDialog
  3. 【SSM】第一课 超市订单管理平台--SSM框架整合
  4. 系统结构复习——流水线技术
  5. 腾讯云linux装mysql_Linux腾讯云下安装mysql
  6. 【面试记录】YY直播黑盒测试实习生
  7. Go 每日一库之 fyne
  8. 互联网摸鱼日报(2023-01-04)
  9. OpenHarmony-鸿蒙 华为智能家居IoT设备开发-环境搭建篇 一键部署开发环境
  10. 概率论中多元随机变量函数分布中的卷积公式原来是重积分换元