Python笔记(十三):urllib模块
(一) URL地址
URL地址组件
|
URL组件 |
说明 |
|
scheme |
网络协议或下载方案 |
|
net_loc |
服务器所在地(也许含有用户信息) |
|
path |
使用(/)分割的文件或CGI应用的路径 |
|
params |
可选参数 |
|
query |
连接符(&)分割的一系列键值对 |
|
fragment |
指定文档内特定锚的部分 |
net_loc组件
user:password@host:port
|
组件 |
说明 |
|
user |
用户名或登录 |
|
password |
用户密码 |
|
host |
运行web服务器的计算机名称或地址(必需) |
|
port |
端口号(如果不是默认的80) |
(二) urllib
这里主要说明urllib.request和urllib.parse.
(三) urllib.request
urllib.request
|
组件 |
说明 |
urlopen(url,data=None) |
打开URL链接,并返回一个文件类型对象,就像open用二进制只读方式在本地打开了一个文件一样。 url:可以是url字符串,也可以是请求对象 data:url是post请求时,可以指定要传的数据 |
urlretrieve(url,filename=None) |
下载url中的文件 filename:文件名及路径(没有指定路径则存放到当前工作目录下) |
urlopen对象方法
|
组件 |
说明 |
read() |
读取所有数据 |
readline() |
读取一行数据 |
readlines() |
读取所有行,作为列表返回 |
fileno() |
返回文件句柄 |
close() |
关闭url连接(close及上面4个方法和open的同名方法是一样的) |
info() |
返回MIME(多目标因特网邮件扩展)头文件。这个头文件通知浏览器返回的文件类型、以及可用哪类应用程序打开。 |
geturl() |
返回真正的url(例如如果出现重定向,就可以从最终打开的文件中获得真正的url) |
getcode() |
返回HTTP状态码 |
1 import urllib.request
url = 'https://tieba.baidu.com/p/5475267611'
#打开url(就像用open二进制只读方式打开一个文件一样),使用read读取所有数据
html = urllib.request.urlopen(url).read()
print(type(html)) url_file = 'https://imgsa.baidu.com/forum/w%3D580/sign=99114e38abec08fa260013af69ef3d4d/e549b13533fa828bc80c7764f61f4134960a5a85.jpg'
#下载url中的文件并保存
urllib.request.urlretrieve(url_file,'C:\Temp\\1.jpg') #返回MIEM头文件
html_info = urllib.request.urlopen(url).info()
print(html_info)
(四) urlib.parse
urlib.parse
|
函数 |
说明 |
|
urlparse(urlstr) |
将url解析为一个元组(scheme='', netloc='', path='', params='', query='', fragment='') |
|
urlunparse(urltup) |
和urlparse相反,将url组件(一个元组)拼接为完整的url |
|
urljoin(base,url) |
将base的根域名和url拼接为一个完整的url base:函数会自动截取net_loc及前面的所有内容 |
1 import urllib.parse url = 'https://www.cnblogs.com/cate/python/'
newurl = '/cate/ruby/'
#将url解析为一个元组(scheme='', netloc='', path='', params='', query='', fragment='')
urlpar = urllib.parse.urlparse(url)
print('urlparse示例:',urlpar)
#和urlparse刚好相反,将元组(scheme='', netloc='', path='', params='', query='', fragment='')拼接为完整的url
urlunp = urllib.parse.urlunparse(urlpar)
print('urlunparse示例:',urlunp)
#将url netloc及前面部分的内容与newurl连接起来
url_ruby = urllib.parse.urljoin(url,newurl)
print('urljoin示例:',url_ruby)

Python笔记(十三):urllib模块的更多相关文章
- Python笔记(十三)_os模块和os.path模块
os模块中关于文件/目录常用的函数使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,' ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- python笔记之常用模块用法分析
python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...
- python笔记之bisect模块
python笔记之bisect模块 当你决定使用二分搜索时,这个模块会给你带来很大的帮助. 例子 import bisect L = [1,3,3,6,8,12,15] x = 3 #在L中查找x,x ...
- python笔记之itertools模块
python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...
- python笔记之ZipFile模块
python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...
- python笔记之subprocess模块
python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...
- python笔记之Cmd模块
python笔记之Cmd模块 Cmd类型提供了一个创建命令行解析器的框架,默认情况下,它使用readline来进行交互式操作.命令行编辑和命令完成. 使用cmd创建的命令行解释器循环读取输入的所有行并 ...
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
随机推荐
- (转)实现一个cache装饰器,实现过期可清除功能
原文:http://www.cnblogs.com/JerryZao/p/9574927.html http://blog.51cto.com/11281400/2107790-----装饰器应用练习 ...
- spring cloud开发、部署注意
一.开发时,配置服务的配置使用本地路径,不使用svn和git,因为后者每个开发人员都会修改配置,导致别人也拿到其他人修改的配置,本地配置示例如下: spring: application: name: ...
- 一个对眼睛很好的vim 颜色主题
地址:https://github.com/altercation/vim-colors-solarized 安装: $ cd vim-colors-solarized/colors $ mv sol ...
- 整理学习ASP.NET MVC的资源
网站 http://www.asp.net/mvc http://stackoverflow.com/questions/tagged/asp.net-mvc+asp.net-mvc-4?sort=n ...
- poj1330-----------关于公共祖先的问题
关于公共祖先的问题分类: 这类问题有多种解法和类型,根据题目给出的信息去判断使用哪一种 1.给你树,只支持从父亲找儿子,不支持儿子找父亲,最后要求最近公共祖先,使用dfs或者分治 2.支持儿子找父亲, ...
- Hadoop2源码分析-Hadoop V2初识
1.概述 在完成分析Hadoop2源码的准备工作后,我们进入到后续的源码学习阶段.本篇博客给大家分享,让大家对Hadoop V2有个初步认识,博客的目录内容如下所示: Hadoop的渊源 Hadoop ...
- 高可用Hadoop平台-集成Hive HAProxy
1.概述 这篇博客是接着<高可用Hadoop平台>系列讲,本篇博客是为后面用 Hive 来做数据统计做准备的,介绍如何在 Hadoop HA 平台下集成高可用的 Hive 工具,下面我打算 ...
- 使用Nagios打造专业的业务状态监控
想必各个公司都有部署zabbix之类的监控系统来监控服务器的资源使用情况.各服务的运行状态,是否这种监控就足够了呢?有没有遇到监控系统一切正常确发现项目无法正常对外提供服务的情况呢?本篇文章聊聊我们如 ...
- 使用ssh-add命令添加ssh私钥时报错
当使用ssh-add命令添加ssh私钥时,报如下错误: Could not open a connection to your authentication agent. 其实需要先执行如下命令: e ...
- 通过DataTrigger绑定Tag属性值进行判断(.net 3.5的环境)
如下,在UserControl中通过Tag传递不同的值,然后在Style中使用DataTrigger进行判断, <UserControl Style="{DynamicResource ...