`
qindongliang1922
  • 浏览: 2188590 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117663
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126070
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60024
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71399
社区版块
存档分类
最新评论

Python3.4网页抓取之编码异常

阅读更多
使用Python抓取网页的时候,有时候我们会解析出现异常,这时候,就会导致整个网页解析不成功,究其原因,仅仅是因为编码里某个小小的地方编码出错了,才导致解析失败,那么我们应该如何比较好的避免这种情况出现呢?
看下面的例子:


import urllib.request,urllib.parse,http.cookiejar


cj=http.cookiejar.CookieJar()
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
opener.addheaders=[('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]

urllib.request.install_opener(opener)

m=urllib.request.urlopen("http://qindongliang.iteye.com/blog/2142783")



print(m.read().decode('utf-8'))

控制台输出如下:
Traceback (most recent call last):
  File "D:/pythonide/pythonprojectworkspace/python进阶/http学习/tt.py", line 14, in <module>
    print(m.read().decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 626: invalid continuation byte

Process finished with exit code 1


当然,我们抓取其他的网页,可能没有这个异常,但是由于某些编码的内容有一些小小的问题,所以导致了上述异常的发生,可以看出是在decode解码时发生的异常,下面我们就看下decode方法的支持的模式,来自python的API文档里面有这样一段话:


codecs.encode(obj, encoding='utf-8', errors='strict') 
Encodes obj using the codec registered for encoding.

Errors may be given to set the desired error handling scheme. The default error handler is strict meaning that encoding errors raise ValueError (or a more codec specific subclass, such as UnicodeEncodeError). Refer to Codec Base Classes for more information on codec error handling.


python默认的解码对待错误的方式是严格执行的,有一点小小错误,就会整个解析失败,当然python也提供了几种其他的错误模式:
序号模式说明
1'strict'只要编码出现错误,就抛出异常
2'replace'使用?等字符替换出现错误编码的地方
3'ignore'忽略出现编码错误的地方,继续解码,并不会抛出任何异常
4'xmlcharrefreplace'用适当的xml字符标记出现问题的地方
5'backslashreplace'使用反斜杠代替出异常字符
6'surrogateescape'使用UPUA标记替代


现在我们加上ignore属性后,又可以正常解析了:




  • 大小: 385.8 KB
0
0
分享到:
评论

相关推荐

    Python3.4编程实现简单抓取爬虫功能示例

    ### Python3.4编程实现简单抓取爬虫功能示例 在互联网时代,网络爬虫是一种非常实用的技术,它能够帮助我们自动收集大量的网络数据。本篇内容将围绕如何使用Python 3.4来实现一个简单的网页抓取爬虫进行详细介绍。 ...

    python3.4爬虫demo

    本文主要介绍一个基于Python 3.4版本的简单网络爬虫示例代码,该爬虫的目标是从百度图片首页抓取图片资源。通过分析这段代码,我们可以了解到如何利用Python的基本模块进行网络请求,并使用正则表达式解析HTML文档来...

    Python网络编程攻略源码.7z

    asyncio是Python 3.4引入的一个高级异步I/O框架,它基于事件循环,适用于编写并发代码,特别适合处理大量并发连接。通过async/await语法,开发者可以编写出简洁、易于理解和维护的异步程序。在源码中,你可能找到...

    Python基础课件.pdf

    - 使用UTF-8编码保存Python代码文件。 - 在文件开头添加编码声明`#-*-coding:utf-8-*-`。 ##### 4.2 数据类型和操作 - Python提供了丰富的数据类型,包括但不限于:整数、浮点数、字符串、列表、元组、字典、集合...

    python-guide

    - **抓取技术**:介绍了使用Python进行网页抓取的技术方法。 - **工具推荐**:推荐了一些流行的HTML抓取工具,如BeautifulSoup、Scrapy等。 ##### 4.4 命令行应用 - **命令行基础**:概述了使用Python编写命令行...

    holbertonschool-higher_level_programming:高级编程

    请求和网页抓取等等! 要求 Ubuntu 14.04 LTS Python 3.4 pip3 1.5 pep8 1.7 MySQL 5.7 MySQLdb 1.3 SQLAlchemy 1.1 节点10.14 半标准14.0 专案 0x05-python-例外 0x06-python-classes 0x07-python-test_...

    Python Guide Document--写出好的代码

    - **爬虫技术**:使用BeautifulSoup、Scrapy等库进行网页抓取。 - **数据处理**:对抓取的数据进行清洗和存储。 #### 3.4 Command-line Applications - **命令行工具**:编写简单的命令行应用程序。 - **命令行...

    python guide

    使用Python进行网页数据抓取是一个常见的需求,尤其是在数据分析领域。 - **BeautifulSoup**:解析HTML文档,提取所需数据。 - **Requests**:发送HTTP请求获取网页内容。 ##### 3.4 命令行应用 Python同样适合...

    Python Cookbook

    4.3 若列表中某元素存在则返回之 146 4.4 循环访问序列中的元素和索引 147 4.5 在无须共享引用的条件下创建列表的列表 148 4.6 展开一个嵌套的序列 149 4.7 在行列表中完成对列的删除和排序 152 4.8 二维阵列...

    Python在财务中的应用智慧树知到课后章节答案2023年下浙江经贸职业技术学院.docx

    - **网络爬虫**:Python常用于网页抓取和数据提取。 - **数据分析**:Python是进行数据清洗、分析和可视化的强大工具。 - **人工智能**:Python广泛应用于机器学习、深度学习等领域。 ### 二、Python编程基础 ####...

    PyPI 官网下载 | link-0.3.4.tar.gz

    对于`link`库的用途,由于没有提供具体的描述,我们可以假设它可能提供了某种链接处理或链接分析的功能,比如网页链接抓取、链接验证、URL解析等。具体功能需查看库的文档或源代码来了解。在实际应用中,Python库...

    XDUQueryBook:西电图书馆查看借书情况

    这个工具分为两个版本:`login.py` 和 `login_3.py`,分别针对Python 2.7和Python 3.4这两个不同的Python版本。由于Python 2.7在处理中文字符时可能存在乱码问题,因此`login_3.py`可能是为了解决这个问题而创建的。...

    3.4_London_Housing_Case_Study

    这可能包括创建新变量(如计算房间面积比例),编码分类变量(如将区域名称转换为数字编码),或者对数值变量进行分箱。这一阶段对模型的性能至关重要,因为模型往往只能处理数值特征。 四、建模与评估 在准备好...

    20B_基于Scrapy的WebUI开发_项目计划书v1.2.01

    Scrapy是一个强大的Python爬虫框架,广泛用于数据抓取和信息处理。随着互联网数据的爆炸式增长,对高效、规范的网络爬虫的需求愈发强烈。本项目旨在研究并应用Scrapy框架,构建一个基于WebUI的管理平台,以提升爬虫...

    1数据分析类论文大纲(余力)1

    3.3 数据预处理:讨论处理缺失值、异常值、文本数据和非结构化数据的方法,如插值、标准化、编码和文本清洗等。 3.4 数据特征分析:通过相关性分析、主成分分析等方法探究特征与目标变量的关系,为模型选择和构建...

Global site tag (gtag.js) - Google Analytics