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 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)

 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号