返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Python爬取网页的编码处理
  • 822
分享到

浅谈Python爬取网页的编码处理

浅谈网页Python 2022-06-04 18:06:12 822人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

背景 中秋的时候,一个朋友给我发了一封邮件,说他在爬链家的时候,发现网页返回的代码都是乱码,让我帮他参谋参谋(中秋加班,真是敬业= =!),其实这个问题我很早就遇到过,之前在爬小说的时候稍微看了一下,不过没

背景

中秋的时候,一个朋友给我发了一封邮件,说他在爬链家的时候,发现网页返回的代码都是乱码,让我帮他参谋参谋(中秋加班,真是敬业= =!),其实这个问题我很早就遇到过,之前在爬小说的时候稍微看了一下,不过没当回事,其实这个问题就是对编码的理解不到位导致的。

问题

很普通的一个爬虫代码,代码是这样的:


# ecoding=utf-8
import re
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf8')

url = 'Http://gimoo.net/ershoufang/rs%E6%8B%9B%E5%95%86%E6%9E%9C%E5%B2%AD/'
res = requests.get(url)
print res.text

目的其实很简单,就是爬一下链家的内容,但是这样执行之后,返回的结果,所有涉及到中文的内容,全部会变成乱码,比如这样

查看图片


<script type="text/template" id="newAddHouseTpl">
 <div class="newAddHouse">
  自从您上次浏览(<%=time%>)之后,è&Macr;¥æœç´¢æ¡ä»¶ä¸‹æ?°å¢žåŠ 了<%=count%>套房源
  <a href="<%=url%>" class="LOGNEWERSHOUFANGSHOW" <%=logText%>><%=linkText%></a>
  <span class="newHouseRightClose">x</span>
 </div>
</script>

这样的数据拿来可以说毫无作用。

问题分析

这里的问题很明显了,就是文字的编码不正确,导致了乱码。

查看网页的编码

从爬取的目标网页的头来看,网页是用utf-8来编码的。


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

所以,最终的编码,我们肯定也要用utf-8来处理,也就是说,最终的文本处理,要用utf-8来解码,也就是:decode('utf-8')

文本的编码解码

python的编码解码的过程是这样的,源文件 ===》 encode(编码方式) ===》decode(解码方式),在很大的程度上,不推荐使用


import sys
reload(sys)
sys.setdefaultencoding('utf8')

这种方式来硬处理文字编码。不过在某些时候不影响的情况下,偷偷懒也不是什么大问题,不过比较建议的就是获取源文件之后,使用encode和decode的方式来处理文本。

回到问题

现在问题最大的是源文件的编码方式,我们正常使用requests的时候,它会自动猜源文件的编码方式,然后转码成Unicode的编码,但是,毕竟是程序,是有可能猜错的,所以如果猜错了,我们就需要手工来指定编码方式。官方文档的描述如下:

When you make a request, Requests makes educated guesses about the encoding of the response based on the HTTP headers. The text encoding guessed by Requests is used when you access r.text. You can find out what encoding Requests is using, and change it, using the r.encoding property.

所以我们需要查看requests返回的编码方式到底是什么?


# ecoding=utf-8
import re
import requests
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('utf8')

url = 'http://gimoo.net/ershoufang/rs%E6%8B%9B%E5%95%86%E6%9E%9C%E5%B2%AD/'

res = requests.get(url)
print res.encoding

打印的结果如下:

ISO-8859-1

也就是说,源文件使用的是ISO-8859-1来编码。百度一下ISO-8859-1,结果如下:

ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。

问题解决

发现了这个东东,问题就很好解决了,只要指定一下编码,就能正确的打出中文了。代码如下:


# ecoding=utf-8
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf8')

url = 'http://gimoo.net/ershoufang/rs%E6%8B%9B%E5%95%86%E6%9E%9C%E5%B2%AD/'

res = requests.get(url)
res.encoding = ('utf8')

print res.text

打印的结果就很明显,中文都正确的显示出来了。

查看图片

另一种方式是在源文件上做解码和编码,代码如下:


# ecoding=utf-8
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf8')

url = 'http://gimoo.net/ershoufang/rs%E6%8B%9B%E5%95%86%E6%9E%9C%E5%B2%AD/'

res = requests.get(url)
# res.encoding = ('utf8')

print res.text.encode('ISO-8859-1').decode('utf-8')

另:ISO-8859-1也叫做latin1,使用latin1做解码结果也是正常的。

关于字符的编码,很多东西可以说,想了解的朋友可以参考以下大神的资料。

•《The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)》

以上这篇浅谈Python爬取网页的编码处理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 浅谈Python爬取网页的编码处理

本文链接: https://lsjlt.com/news/14037.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈Python爬取网页的编码处理
    背景 中秋的时候,一个朋友给我发了一封邮件,说他在爬链家的时候,发现网页返回的代码都是乱码,让我帮他参谋参谋(中秋加班,真是敬业= =!),其实这个问题我很早就遇到过,之前在爬小说的时候稍微看了一下,不过没...
    99+
    2022-06-04
    浅谈 网页 Python
  • Python灰帽编程——网页信息爬取
    文章目录 网页信息爬取1. 相关模块1.1 requests 模块1.1.1 模块中的请求方法1.1.2 请求方法中的参数1.1.3 响应对象中属性 1.2 RE 模块1.2.1 匹配...
    99+
    2023-09-24
    python 开发语言 网络安全 系统安全 python脚本 爬虫 requests模块
  • 浅谈Python的异常处理
    Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在e...
    99+
    2022-06-04
    浅谈 异常 Python
  • 浅谈Python处理PDF的方法
    处理pdf文档 第一、 从文本中提取文本 第二、 创建PDF 两种方法 #使用PdfFileWriter import PyPDF2 pdfFiles = [] for filename in ...
    99+
    2022-06-04
    浅谈 方法 Python
  • Python爬取网页的所有内外链的代码
    目录项目介绍代码大纲网站详情代码详情队列内链外链请求头项目介绍 采用广度优先搜索方法获取一个网站上的所有外链。 首先,我们进入一个网页,获取网页的所有内链和外链,再分别进入内链中,获...
    99+
    2024-04-02
  • python 爬取豆瓣网页的示例
    目录python 语法简要介绍爬取网页解析网页储存网页python作为一种已经广泛传播且相对易学的解释型语言,现如今在各方面都有着广泛的应用。而爬虫则是其最为我们耳熟能详的应用,今天...
    99+
    2024-04-02
  • python爬取网页的操作步骤
    小编给大家分享一下python爬取网页的操作步骤,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前在网上也写了不少关于爬虫爬取网页的代码,最近还是想把写的爬虫记录...
    99+
    2023-06-07
  • Python爬虫如何爬取网页中所有的url
    这篇文章主要介绍Python爬虫如何爬取网页中所有的url,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂...
    99+
    2023-06-14
  • 浅谈 Python 网络爬虫的那些事(文末送书7.0)
    文章目录 📋前言🎯什么是网络爬虫🧩 网络爬虫概述 🎯爬虫案例🧩代码案例 🔥文末送书&#x...
    99+
    2023-09-20
    python 爬虫 开发语言 网络爬虫 Beautiful Soup 网络请求 原力计划
  • Python用requests-html爬取网页的实现
    目录1. 开始2. 原理3. 元素定位css 选择器4. CSS 简单规则5. Xpath简单规则6. 人性化操作7. 加载 js8. 总结1. 开始 Python 中可以进行网页解...
    99+
    2024-04-02
  • python怎么爬取搜索后的网页
    要爬取搜索后的网页,可以使用Python中的爬虫库(如Requests、BeautifulSoup、Scrapy等)来发送HTTP请...
    99+
    2023-09-15
    python
  • python 获取网页编码方式实现代码
    python 获取网页编码方式实现代码 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(...
    99+
    2022-06-04
    代码 方式 网页
  • 爬取某网站写的python代码
        代码如下:import requestsfrom pyquery import PyQueryimport reimport osi...
    99+
    2023-06-04
  • Python爬虫爬取美剧网站的实现代码
    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了。但是,作为一个宅diao的我又...
    99+
    2022-06-04
    爬虫 美剧 代码
  • 浅谈Python数据处理csv的应用小结
    目录题目代码运行实例题目 文件scores.csv包含十位学生的成绩单,表头是"姓名 语文 数学 英语"。请编程完成下述功能。1)计算每位学生的总分与排名,并将扩...
    99+
    2024-04-02
  • python爬取动态网页的方法是什么
    Python爬取动态网页的方法有以下几种:1. 使用Selenium库:Selenium是一个自动化测试工具,可以模拟浏览器操作,包...
    99+
    2023-09-15
    python
  • python怎么爬取网页内的指定内容
    要爬取网页内的指定内容,可以使用Python中的第三方库,如BeautifulSoup和Requests。首先,需要安装这两个库。使...
    99+
    2023-08-08
    python
  • Python实现网页爬虫基本实现代码怎么编写
    Python实现网页爬虫基本实现代码怎么编写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python是一款功能强大的计算机程序语言,同时也可以被看做是一款面向...
    99+
    2023-06-17
  • Python:使用爬虫抓取网页中的视频并下载(完整源码)
    Python:使用爬虫抓取网页中的视频并下载(完整源码) 在今天的程序开发世界中,网站是不可或缺的一部分。人们使用网站来获取有用的信息、购买商品和娱乐自己。这些网站的内容通常包含了各种类型的文件,其中...
    99+
    2023-08-31
    python 爬虫 音视频
  • Python爬取网页中的图片(搜狗图片)详解
    前言 最近几天,研究了一下一直很好奇的爬虫算法。这里写一下最近几天的点点心得。下面进入正文: 你可能需要的工作环境:   Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的...
    99+
    2022-06-04
    图片 搜狗 详解
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作