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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏康怀帅的专栏

Bash echo read 命令详解

echo 命令用来输出内容,read 命令用于读取用户输入。 echo 高亮输出 格式如下: $ echo -e "\033[字背景颜色;文字颜色m字符串\03...

32650
来自专栏用户2442861的专栏

linux中fork()函数详解(原创!!实例讲解)

转载于http://blog.csdn.net/jason314/article/details/5640969

1K30
来自专栏chenssy

【死磕Java并发】—–J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE...

35640
来自专栏python成长之路

(汇总)os模块以及shutil模块对文件的操作

15350
来自专栏达摩兵的技术空间

你不知道的opn模块

opn模块通常是作为跨平台的打开文件或者网站的模块,在web应用中最常见的使用是比如项目开发或者启动的时候打开浏览器进行访问。

7310
来自专栏流媒体

C语言编译过程

预编译结果解释 # linenum filename flags 分别对应行号、文件、标识。 flag对应的含义

29920
来自专栏锦小年的博客

python学习笔记5.3-包的创建

包,也可以称为库,是具有很多功能的一个集合体。本文主要介绍如何自己创建一个包,以及介绍一些在包的创建过程中的技巧。 1. 包的创建 本文的例子将使用最复杂的情况...

27880
来自专栏游戏开发那些事

【Linux程序设计】之进程控制&守护进程

这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的。

20420
来自专栏H2Cloud

Boost::asio io_service 实现分析

Boost::asio io_service 实现分析 io_service的作用 io_servie 实现了一个任务队列,这里的任务就是void(void)的...

59990
来自专栏Python小屋

详解Python项目开发时自定义模块中对象的导入和使用

背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象;2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将...

41050

扫码关注云+社区

领取腾讯云代金券