
(一) 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
 2 url = 'https://tieba.baidu.com/p/5475267611'
 3 #打开url(就像用open二进制只读方式打开一个文件一样),使用read读取所有数据
 4 html = urllib.request.urlopen(url).read()
 5 print(type(html))
 6 
 7 url_file = 'https://imgsa.baidu.com/forum/w%3D580/sign=99114e38abec08fa260013af69ef3d4d/e549b13533fa828bc80c7764f61f4134960a5a85.jpg'
 8 #下载url中的文件并保存
 9 urllib.request.urlretrieve(url_file,'C:\Temp\\1.jpg')
10 
11 #返回MIEM头文件
12 html_info = urllib.request.urlopen(url).info()
13 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
 2 
 3 url = 'https://www.cnblogs.com/cate/python/'
 4 newurl = '/cate/ruby/'
 5 #将url解析为一个元组(scheme='', netloc='', path='', params='', query='', fragment='')
 6 urlpar = urllib.parse.urlparse(url)
 7 print('urlparse示例:',urlpar)
 8 #和urlparse刚好相反,将元组(scheme='', netloc='', path='', params='', query='', fragment='')拼接为完整的url
 9 urlunp = urllib.parse.urlunparse(urlpar)
10 print('urlunparse示例:',urlunp)
11 #将url netloc及前面部分的内容与newurl连接起来
12 url_ruby = urllib.parse.urljoin(url,newurl)
13 print('urljoin示例:',url_ruby)