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 ...
随机推荐
- Android初识Helloworld
在Eclipse+ADT中创建HelloWorld非常简单,直接按照导航下一步就可以了.本文重点不在如何创建,而在理解HelloWorld项目的文件. HelloWorld的目录结构有: src:存放 ...
- docker with redis
docker run --name myredis -d -v /home/rudy/pro/database/redis:/data -p : --privileged=true redis
- Shell脚本 | 一键卸载安卓App
在平时工作的过程中,很多重复性内容可以通过运行脚本文件来代替.一次编写,就能带来很大的效率提升. 今天跟大家分享一个简单的 Shell 脚本,只有区区 20 行左右的代码. 因为有时候我们测试某个应用 ...
- Vue + Element UI 实现权限管理系统 前端篇(六):更换皮肤主题
自定义主题 命令行主题工具 1.安装主题工具 首先安装「主题生成工具」,可以全局安装或者安装在当前项目下,推荐安装在项目里,方便别人 clone 项目时能直接安装依赖并启动. yarn add ele ...
- springboot-27-整合mybatis,druid连接池
sprinboot整合mybatis, 有2种方式, 第一种完全使用注解的方式, 还有一种就是使用xml文件的方式 项目使用gradle + idea, 数据源使用druid, 多使用groovy编写 ...
- GitHub多人协作简明教程
本文面向已经了解/熟悉git基本命令但是并不熟悉如何使用GitHub进行多人协作开发项目的同学. 为了简单起见,这里假设只有两个开发人员,HuanianLi 和 DaxiangLi.他们在GitHub ...
- 【杂谈】Java I/O的底层实现
前言 Java I/O功能封装的很好,使用起来很方便,就是刚开始学的时候,如果不了解装饰器模式,会被他繁多的类给吓到.用多了也就习惯了,而且现在有很多实用的封装良好的实用类,可直接读写整个文件.开发者 ...
- java的构造方法链
转自:http://blog.csdn.net/Mr_KkTian/article/details/70226561 1.简介 构造一个类的实例时, 将会调用沿着继承链的所有父类的构造方法. 当构造一 ...
- Log4j和Log4j2的区别
Log4j是Apache的一个开源项目,我们不去考究它的起源时间,但是据我了解,log4j 1已经不再更新了. 下面我就以列举的方式来浅谈log4j和log4j 2的不同之处. 一.配置文件类型 lo ...
- Python制作回合制手游外挂简单教程(上)
引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这里使用 ...