关于python3.x版本 urllib修改过后遇到的几个问题
来源:互联网 发布:二手交易软件有什么 编辑:程序博客网 时间:2024/06/05 03:39
urllib 文档描述
因为特意在使用python3.x版本,所以在学习爬虫的时候经常会用到一些网上2.x版本的代码,总是报错,就很尴尬。这里列出一些已经遇到的问题,之后在遇到其他的还会有补充。
先引用官方文档列出一下python3.x 版本中urllib各部分的功能:
urllib is a package that collects several modules for working with URLs:
- urllib.request for opening and reading URLs 打开和阅读
- urllib.error containing the exceptions raised by urllib.request 包含意外和错误
- urllib.parse for parsing URLs 解析
- urllib.robotparser for parsing robots.txt files 解析robots.txt文件
直译大概是这样:(
文档连接
urlopen
首先就是urlopen,在2.x版本中,urlopen的使用方法如下:
import urllib2url = 'http://www.abc.com'response = urllib2.urlopen(url)
而在python3.x中urllib 和 urllib2 合并了。那么,这样说来应该写作:
import urlliburl ='http://www.abc.com'response = urllib.urlopen(url)
但是,事实上会报出如下错误:
module ‘urllib’ has no attribute ‘urlopen’
因为urlopen并不在urllib模块中,而是被移动到了urllib.request中。这跟前面所提到的文档中写的是一致的,urllib.request是要用来打开和阅读连接。
这里必须要说明:
import urlliburllib.request.urlopen()
报错(原因待查):
AttributeError: module ‘urllib’ has no attribute ‘request’
正确的做法是在import的时候必须注明:
import urllib.request
所以正确的代码段落如下所示:
import urllib.requesturl = 'http://www.abc.com'response = urllib.request.urlopen(url)
urlencode
在python2.x中urlencode的用法如下:
import urlliburl='http://www.abc.com'values = {}values['username']='abc'values['password']='abc'data = urllib.urlencode(values)
在python3.x中报错信息如下:
AttributeError: module ‘urllib’ has no attribute ‘urlencode’
在前面的介绍中写到urllib.parse是用来做url解析的,所以在这里urlencoding被移入了urllib.parse中。正确的写法为:
import urllibvalues={}values['username']='abc'values['password']='abc'data = urllib.parse.urlencode(values)
另外在抓取的时候经常会有人出现乱码的现象,除了常规文件头要加的那几个系统默认编码调整以外,在request.read()后面一定要加一个decode这样才能够正常显示中文。
- 关于python3.x版本 urllib修改过后遇到的几个问题
- python3.x 和 python2.x关于 urllib的用法
- python3.x 的urllib使用例子
- python3.x中urllib的使用
- python3.x 的urllib使用例子
- python3.x 中urllib的使用
- python3.x 的urllib使用例子
- Python3.x urllib
- python3版本中的urllib
- 版本适配中遇到的几个问题
- 关于打包遇到的几个问题
- python3.x中的urllib模块
- python3.x中的urllib模块
- python3.x的urllib.request哪去了?
- python3.x中urllib和urllib2包的更新
- cocos2d-x开发遇到的几个问题
- Python3 的urllib实例
- python3关于urllib中urlopen报错问题的解决
- NYOJ A : 和的问题
- 好用的文件读入
- linux服务器安装python3
- TCP/IP详解卷1:协议(三)【IP:网际协议】
- python学习笔记(十六)——字典+collections模块的其他数据结构
- 关于python3.x版本 urllib修改过后遇到的几个问题
- android.content.res.Resources$NotFoundException: Resource ID #0x0
- 字符串-放回全排列
- 匠者用心临砥上流-Bootstrap v4 前端架构翻译手记
- 决策树(一)ID3算法
- 【HDU 1233】还是畅通工程
- UE4 动态创建Actor并且附加static mesh
- 仿大前端www.daqianduan.com列表
- 间隔 十秒 打印 “HelloWord”