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 ...
随机推荐
- 编写一个c++工程
c++接触的很少,之前也只是会编写一个简单的cpp文件,但一个工程的实现,往往不仅包括源文件(.cpp后缀文件)一般还有头文件(.h后缀文件)等.一个c++工程中只能有一个main函数,这个函数所在的 ...
- Spring Cloud Hystrix
接上篇: Spring Cloud Eureka 使用命令开启两个服务提供者 java -jar .\hello--SNAPSHOT.jar --server.port= java -jar .\he ...
- 为什么要设置Java环境变量(windows)
在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...
- PyCharm引入python需要使用的包
在学习python的时候,被推荐了使用PyCharm这款IDE,但是在import包的时候却发生了问题- -无法找到相应的包,但是明明通过pip安装成功了 在这款IDE中,要导入包,需要手动进行引入 ...
- 高可用Hadoop平台-集成Hive HAProxy
1.概述 这篇博客是接着<高可用Hadoop平台>系列讲,本篇博客是为后面用 Hive 来做数据统计做准备的,介绍如何在 Hadoop HA 平台下集成高可用的 Hive 工具,下面我打算 ...
- do {...} while (0) 的用途汇总(欢迎补充)
在一些Linux内核和其它的开源代码中,我们经常看到像下面这样的代码: do{ ... }while(0) 该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢? ...
- 用鼠标键盘来控制你的Android手机——同屏显示简单教程
今天在微博上看到有人用电脑鼠标操作iPhone手机玩打飞机游戏,非常炫,虽然自己用的不是iPhone,但相信Android手机肯定也能实现这样的功能,于是网上各种搜索方法,终于看到了一篇试用成功的帖子 ...
- 生成对抗网络(GAN)
基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...
- python采用pika库使用rabbitmq总结,多篇笔记和示例
这一段时间学习了下rabbitmq,在学习的过程中,发现国内关于python采用pika库使用rabbitmq的资料很少,官网有这方面的资料,不过是都英文的.于是笔者结合自己的理解,就这方面内容写了一 ...
- php 冒泡排序的两种思路以及优化
php冒泡排序,两种思路,时间复杂度都是O(n^2),当然最优的时间复杂度就是O(n),以下说的都是正序排列(倒序的话,把内层循环的大于号换成小于号就好了) 第一种冒泡排序 思路就是把第一个数跟所有的 ...