(一)      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模块的更多相关文章

  1. Python笔记(十三)_os模块和os.path模块

    os模块中关于文件/目录常用的函数使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,' ...

  2. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  3. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  4. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  5. python笔记之bisect模块

    python笔记之bisect模块 当你决定使用二分搜索时,这个模块会给你带来很大的帮助. 例子 import bisect L = [1,3,3,6,8,12,15] x = 3 #在L中查找x,x ...

  6. python笔记之itertools模块

    python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...

  7. python笔记之ZipFile模块

    python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...

  8. python笔记之subprocess模块

    python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...

  9. python笔记之Cmd模块

    python笔记之Cmd模块 Cmd类型提供了一个创建命令行解析器的框架,默认情况下,它使用readline来进行交互式操作.命令行编辑和命令完成. 使用cmd创建的命令行解释器循环读取输入的所有行并 ...

  10. Python爬虫之urllib模块2

    Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...

随机推荐

  1. (转)python通过paramiko实现,ssh功能

    python通过paramiko实现,ssh功能 1 import paramiko 2 3 ssh =paramiko.SSHClient()#创建一个SSH连接对象 4 ssh.set_missi ...

  2. Android从零开始

    Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...

  3. Android:一个高效的UI才是一个拉风的UI(二)

    趁今晚老大不在偷偷早下班,所以有时间继续跟大伙扯扯UI设计之痛,也算一个是对上篇<Android:一个高效的UI才是一个拉风的UI(一)>的完整补充吧.写得不好的话大家尽管拍砖~(来!砸死 ...

  4. hibernate对连接池的支持和HQL查询

    hibernate对连接池的支持 连接池, 作用: 管理连接:提升连接的利用效率! 常用的连接池: C3P0连接池 Hibernate 自带的也有一个连接池,且对C3P0连接池也有支持! 只维护一个连 ...

  5. 常用的oh-my-zsh插件

    每次换电脑,需要重新配置开发环境是件很麻烦的事情,作为一个有洁癖的人又不想用Time Machine.记忆力大不如以前,很多插件又忘了装.正好下个月又需要给团队小伙伴讲讲提升效率这件事要讲到oh-my ...

  6. superset----缓存之redis

    一.概述 Superset使用Flask-Cache进行缓存,Flask-Cache支持redis,memcached,simplecache(内存),或本地文件系统)等缓存后端,如果你打算使用mem ...

  7. Redhat6.8下安装Oracle11gR2

    Step1.配置本地yum源,方便安装依赖包 df -h 补充: df命令查看 linux系统磁盘空间以及使用情况,-h代表方便阅读方式显示  :/dev/sr0为光驱设备名 mkdir cdrom ...

  8. [javaSE] 看知乎学习工厂模式

    factory的“本质”就是根据不同的输入创建出不同类型的对象. 引入factory的原因就是你需要根据不同的输入创建不同类型的对象. 简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无 ...

  9. Java JDBC的基础知识(四)

    之前学习了如何创建一个数据库工具类,如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...

  10. 关于《阿里巴巴Java开发规约》插件的安装与使用

    一.安装 二.idea插件的安装与使用 https://github.com/alibaba/p3c/tree/master/idea-plugin#run-plugin Idea Plugin Pr ...