python爬虫

代码写挺长的,也是边学边写,但一直搞不清楚python的encode(编码)和decode(解码)。以下是我的探究之路。

一、当然先看官方文档

地址如下

里面提到encode函数‘Return an encoded version of the string as a bytes object.’就是将字符串进行编码,返回得到bytes类型对象,

而decode函数正好相反,是将bytes解码为字符串类型。

二、实际操作一下

直接以爬虫代码为例:

1
2
response=requests.get(BASE_DOMAIN, headers=HEADERS)
print(response.text)

run一下之后会发现很多乱码

查了一下发现问题处在.text上,.text是返回网页的相应数据,并按照机器认为的最大可能去解码比如utf-8。而观察本站发现’charset=gb2312’所以出现了乱码。于是,

我用encoding规定用gb2312解码:

1
2
3
4
response=requests.get(BASE_DOMAIN, headers=HEADERS)

response.encoding="gb2312"
print(response.text)

果然解决了乱码问题,但这和 大专栏  python en(de)codeencode,decode没啥关系。。。

接下来就有关系了。

我换了一种方式:

1
2
3
response=requests.get(BASE_DOMAIN, headers=HEADERS)
print(response.content)

发现爬到的是bytes类型,意识到.content返回的数据是不进行解码的,又由于是由bytes到字符串的解码,所以使用decode()

1
2
response=requests.get(BASE_DOMAIN, headers=HEADERS)
print(response.content.decode('gb2312'))

一运行,woc!报错了

说是gb2312不能解码,这不矛盾吗…

于是赶紧上网查了一下发现gbk的解码范围包含了gb2312,于是尝试改为gbk,问题解决,成功解码~

这只是用了decode(),那再作死一下把解码的再编码回来,走你:

1
2
3
response=requests.get(BASE_DOMAIN, headers=HEADERS)
r=response.content.decode('gbk')
print(r.encode('gbk'))

成功编码~

经过了这次的探索尝试,搞明白了Python编码和解码,最近在学习汇编,相信之后从硬件的角度会对编码解码这方面有更深的理解!

python en(de)code的更多相关文章

  1. Converting Python Virtual Machine Code to C

    Converting Python Virtual Machine Code to C

  2. Python on VS Code

    install python extension Press F1, and input "ext install python". Then the icon at the le ...

  3. python 调用 C++ code

    本文以实例code讲解python 调用 C++的方法. 1. 如果没有参数传递从python传递至C++,python调用C++的最简单方法是将函数声明为C可用函数,然后作为C code被pytho ...

  4. Pycharm创建Django项目显示python non-zero exit code(1)错误

    好久时间没有做Django的项目了,今天创建项目竟然报Non-zero exit code(1)错误 查明原因是因为pip不是最新版本,需要执行以下命令:python -m pip install - ...

  5. python单线程爬虫code

    广度优先算法: # -*- coding: utf-8 -*- import urllib import urllib.request from bs4 import BeautifulSoup im ...

  6. python shopping incomplete code

    #shopping code#shopping.py#导入登录模块import login# shop car beginningsalary = input("请输入工资:\t" ...

  7. facebook视频上传python 返回错误code:100,'type':OAuthException

    首先重新获取访问口令token: https://developers.facebook.com/tools/debug/accesstoken/?q=EAAYDuzyd3eYBAK9lZCErZBl ...

  8. python参数Sample Code

    import time import datetime import getopt import sys try: opts, args = getopt.getopt(sys.argv[1:], & ...

  9. Python with VS Code

    1. 基本的代码结构为: 2.

随机推荐

  1. 期末项目之 Json文件

    Github上的json文件: https://raw.githubusercontent.com/color-me/first/master/b

  2. HTML5 可缩放矢量图形(2)—SVG基础

    参考文档——权威 SVG常识 渲染顺序——后来居上:越后面的元素越可见 单位——可以指定,也可以不指定,默认px,其他:em.%.cm.mm... SVG画布——绘制图像的区域,无限大 SVG视窗—— ...

  3. VUE- 访问服务器端数据 Vue-resource

    VUE- 访问服务器端数据 Vue-resource 1. 安装 vue-resource cnpm install vue-resource --save 安装完毕后,在main.js中导入,如下所 ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL PHP 语法

    MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP. 在这些语言中,Mysql在PHP的web开发中是应用最广泛. PHP提供了多种方式来访问和操作Mysql数据库记 ...

  5. JavaScript学习总结(七)

    这一讲我们来学习DOM编程(十分重要),有了DOM编程,我们就可以操作任意的HTML元素了. DOM,文档对象模型 一个html页面被浏览器加载的时候,浏览器就会对整个html页面上的所有标签都会创建 ...

  6. neo4jcypher基本语句

    create (:患者)-[rl:likes]-> (dept:Dept ) ///////////////关系 (STARTNODE)MATCH (video1:YoutubeVideo1)- ...

  7. h5-其他伪元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. PHP语言编写的磁力搜索工具下载BT种子 支持transmission、qBittorrent

    磁力搜索网站2020/01/12更新 https://www.cnblogs.com/cilisousuo/p/12099547.html PT种子.BT种子搜索功能 IYUU自动辅种工具,目前能对国 ...

  9. 饭卡(DP)

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额. 如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大 ...

  10. 17.3.12---urlparse模块的URL下载

    1---urlparse模块是一个解析与泛解析Web网址URL字符串的一个工具 urlparse模块会将一个普通的url解析为6个部分,返回的数据类型都是元祖,同时,他还可以将已经分解后的url在组合 ...