关于 urlencode 的使用和 json 模块的介绍
先附上一段 “百度翻译” 的爬虫代码
- # python爬虫实现百度翻译
- # urllib和request POST参数提交
- from urllib import request,parse
- import json
- def fanyi(keyword):
- base_url = 'https://fanyi.baidu.com/sug'
- # 构建请求对象
- data = {'kw': keyword}
- data = parse.urlencode(data).encode('utf-8')
- # 模拟浏览器
- header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
- req = request.Request(url=base_url,data=data,headers=header)
- res = request.urlopen(req)
- # 获取响应的json字符串
- str_json = res.read().decode('utf-8')
- # 把json转换成字典
- myjson = json.loads(str_json) # 将字符串转化为字典
- info = myjson['data'][0]['v']
- print(info)
- if __name__=='__main__':
- while True:
- keyword = input('请输入翻译的单词:')
- if keyword == 'q':
- break
- fanyi(keyword)
1. 其中,data = parse.urlencode(data).encode('utf-8') 的作用是,将字典里面所有的键值转化为 query-string 格式(key=value&key=value),并且将中文转码。
2. 然后,req = request.Request(url=base_url,data=data,headers=header)的作用是,将base_url, data, headers 拼接成一个请求的 url, 命名为 req。
注:在这里要仔细介绍一下 python3 的编码问题。(看了好多资料才明白)
参考 https://blog.csdn.net/xiaofan_0208/article/details/77366363
https://blog.csdn.net/apache0554/article/details/53889253
data = parse.urlencode(data).encode('utf-8') ,是将data转化为 utf-8格式的编码。decode()都是将其他编码转换为Unicode编码。
3. myjson = json.loads(str_json) 的作用是,将字符串转化为字典,因为从浏览器读取出来的内容都是字符串格式。
编码和解码JSON数据的两个主要的函数是 json.dumps() 和 json.loads()。参考本片文章:https://blog.csdn.net/liangxy2014/article/details/78984998
- import json
- data = {
- 'name' : 'ACME',
- 'shares' : 100,
- 'price' : 542.23
}- json_str = json.dumps(data) # 将字典编码成 json 格式
- data = json.loads(json_str) # 将 json文本 解码成字典格式
关于 urlencode 的使用和 json 模块的介绍的更多相关文章
- Python开发之序列化与反序列化:pickle、json模块使用详解
1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...
- python的json模块
Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...
- php安装json模块
centOS上因为看php源码中没有json模块,于是采用pecl自动编译安装:# yum install php-devel# yum install php-pear# yum install g ...
- 解决python中json模块loads出来的结构都是unicode的问题
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...
- 全局变量 urllib模块 json模块
1.vars() 查看一个.py文件中的全局变量 print(vars()) #重点 __name__': '__main__ '__file__': 'C:/Users/lenovo/Pychar ...
- 我为什么要再给lua写一个json模块
最近要给自己编写的服务器加上json解析模块.根据我当前的项目,可以预测服务器中使用json的地方: 通信.由于与客户端通信使用google protocolbuffer,仅在与SDK通信中使用jso ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- perl json模块
JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...
随机推荐
- Rocket - devices - TLDeadlock
https://mp.weixin.qq.com/s/Zv4HE7zMBzHbsWGg3pa9fg 简单介绍TLDeadlock的实现. 1. TLDeadlock TLDeadlock是抽象类Dev ...
- 使用turtle库绘制一个六角形
from turtle import * color("black","red") begin_fill() pu() fd(-200) pd() seth(3 ...
- Java实现蓝桥杯 算法提高 线段和点
算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...
- Java实现 LeetCode 538 把二叉搜索树转换为累加树(遍历树)
538. 把二叉搜索树转换为累加树 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和 ...
- Java实现 蓝桥杯VIP 算法训练 友好数
有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:1+3=4 4的约数和有:1+2=3 所以9和4不是友好的. 220的约数和有:1 2 4 5 ...
- java实现第二届蓝桥杯最小公倍数(c++)
最小公倍数. 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多. 事实上,它是1至6的每个数字的倍数.即1,2,3,4,5,6 ...
- Java实现第十届蓝桥杯数的分解
试题 D: 数的分解 本题总分:10 分 [问题描述] 把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整 ...
- java实现第五届蓝桥杯年龄巧合
年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄.小明说:今年是我们的幸运年啊.我出生年份的四位数字加起来刚好是我的年龄.表弟的也是如此.已知今年是2014年,并且,小明说的年龄指的是周岁. 请 ...
- 读取Excel文件,抛出类似Cleaning up unclosed ZipFile for archive D:\project\myTest\autoAppUI\excelMode\用例模板2.xlsx 错误解决
读excel用例的时候总报这个错误,一直不知道什么原因~~~~~~~~~~ 今天突然顿悟了,原来是读excel的时候用到了文件流,我在读文件的方法里加了流关闭的操作,完美解决报错
- python—socket编程
一:客户端/服务器 架构 1.硬件C/S架构:(例如,打印机) 2.软件C/S架构:互联网中处处是C/S架构 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频 C/S架构与socket ...