解决python 3 urllib 没有 urlencode 属性的问题
今天在pycharm(我用的python3)练习的时候,发现报了个AttributeError: module 'urllib' has no attribute 'urlencode'的错误。后来发现python2和python3的urllib结构不一样。
下面我用pycharm中python3演示一下:
错误例子:
import urllib import urllib.parse wd = {"wd":"传智播客"} print(urllib.urlencode(wd))
结果:
C:\Users\DELL\AppData\Local\Programs\Python\Python36-32\python.exe E:/untitled/Python_Test/urllib2Demo1.py Traceback (most recent call last): File "E:/untitled/Python_Test/urllib2Demo1.py", line 5, in <module> print(urllib.urlencode(wd)) AttributeError: module 'urllib' has no attribute 'urlencode' Process finished with exit code 1
正确例子:
import urllib import urllib.parse wd = {"wd":"传智播客"} print(urllib.parse.urlencode(wd))
结果:
C:\Users\DELL\AppData\Local\Programs\Python\Python36-32\python.exe E:/untitled/Python_Test/urllib2Demo1.py wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 Process finished with exit code 0
因此需要记住urllib库在python2和python3之间是不同的。
普及一下知识点:
urllib库在python2与python3中的区别
Urllib是python提供的一个用于操作url的模块。
在python2中,有urllib库和urllib2库。在python3中,urllib2合并到urllib库中,我们爬取网页的时候,经常用到这个库。
升级合并后,模块中包的位置变化的地方较多。
以下是python2与python3中常用的关于urllib库的变化:
在python2中使用import urllib2————对应的,在python3中会使用import urllib.request,urllib.error
在python2中使用import urllib————对应的,在python3中会使用import urllib.request,urllib.error,urllib.parse
在python2中使用import urlparse————对应的,在python3中会使用import urllib.parse
在python2中使用urllib2.urlopen————对应的,在python3中会使用urllib.request.urlopen
在python2中使用urllib.urlencode————对应的,在python3中会使用urllib.parse.urlencode
在python2中使用urllib.quote————对应的,在python3中会使用urllib.request.quote
在python2中使用cookielib.CookieJar————对应的,在python3中会使用http.CookieJar
在python2中使用urllib2.Request————对应的,在python3中会使用urllib.request.Request
以上就是urllib相关模块从python2到python3的常见一些变化。
以上这篇解决python 3 urllib 没有 urlencode 属性的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- [个人翻译]Redis 集群教程(下)
- [个人翻译]Redis 集群教程(中)
- 自学Apache Spark博客(节选)
- scrapy爬取免费代理IP存储到数据库构建自有IP池
- 每天一个Linux命令:netstat
- Hadoop - MapReduce
- 进击的爬虫:用Python搭建匿名代理池
- 计算机程序的思维逻辑 (5) - 小数计算为什么会出错?
- QQ空间爬虫最新分享,一天 400 万条数据
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- Python中典型内建函数的用法
- 软件开发接力赛的最后一棒:上线发布
- 计算机程序的思维逻辑 (3) - 基本运算
- 突破反爬虫的利器——开源IP代理池
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 分分钟教会你搭建企业级的 npm 私有仓库
- Golang语言之字符串操作
- Go语言ORM-gorm学习笔记(二)
- TypeScript: 常用的高级类型
- TypeScript:得泛型者,得天下
- 微信PC端多开的秘密
- Spring Cloud 微服务(七)- 上:日志收集集成
- Spring Cloud 微服务(七)- 下:日志收集详解
- Spring Cloud 微服务(八):链路追踪
- 一文带你网络安全 入门到入* [网络安全]
- 小白也能秒懂Vue源码中那些精细设计(选项处理)
- 软件品质评测系统-任务分发管理平台
- 彻底解决小程序无法触发SESSION问题
- 如何搭建前端异常监控系统
- JS+CSS 3实现图片滑块效果