python urllib库

python2和python3中的urllib

urllib提供了一个高级的 Web 通信库,支持基本的 Web 协议,如 HTTP、FTP 和 Gopher 协议,同时也支持对本地文件的访问。

具体来说,urllib 模块的功能是利用前面介绍的协议来从因特网、局域网、本地主机上下载数据。

使用这个模块就无须用到 httplib、ftplib和 gopherlib 这些模块了,除非需要用到更低层的功能。

Python 2 中有 urlib、urlparse、urllib2,以及其他内容。在 Python 3 中,所有这些相关模块都整合进了一个名为 urllib 的单一包中。

urlib 和 urlib2 中的内容整合进了 urlib.request模块中,urlparse 整合进了 urllib.parse 中。

Python 3 中的 urlib 包还包括 response、error 和robotparse 这些子模块。

URL的格式

prot_sch://net_loc/path;params?query#frag

URL的各个部分(Web地址的各个组件)

prot_sch                           网络协议或下载方案
net_loc                            服务器所在地(也含有用户信息)
path                               使用斜杠(/)分割的文件或CGI应用的路径
params                             可选参数
query                              连接符(&)分割的一系列键值对
frag                               指定文档内特定锚的部分

net_loc 可以进一步拆分成多个组件,一些是必备的,另一些是可选的:
user:[email protected]:port

user                               用户名或登录
passwd                             用户密码
host                               运行web服务器的计算机名称或地址(必须的)
port                               端口号(如果不是默认的80)

urllib.parse模块

在python2中叫做urlparse,在python3中已经改名为urllib.parse

urllib.parse 模块提供了一些基本功能,用于处理 URL 字符串。这些功能包括 urlparse()、urlunparse()和 urljoin()。

urlparse()将 urlstr 解析成一个 6 元组(prot_sch, net_loc, path, params, query, frag):

语法:urlparse(urlstr, defProtSch=None, allowFrag=None)
>>> urllib.parse.urlparse("https://www.smelond.com?cat=6")
ParseResult(scheme=‘https‘, netloc=‘www.smelond.com‘, path=‘‘, params=‘‘, query=‘cat=6‘, fragment=‘‘)

urlunparse()的功能与 urlpase()完全相反,其将经 urlparse()处理的 URL 生成 urltup 这个 6元组(prot_sch, net_loc, path, params, query, frag),拼接成 URL 并返回:

语法:urlunparse(urltup)
>>> result = urllib.parse.urlparse("https://www.smelond.com")
>>> print(result)
ParseResult(scheme=‘https‘, netloc=‘www.smelond.com‘, path=‘‘, params=‘‘, query=‘‘, fragment=‘‘)
>>> urllib.parse.urlunparse(result)
‘https://www.smelond.com‘

在需要处理多个相关的 URL 时我们就需要使用 urljoin()的功能了,例如,一个 Web 页中可能会产生一系列页面 URL:

urljoin()取得根域名,并将其根路径(net_loc 及其前面的完整路径,但是不包括末端的文件)与 newurl 连接起来。

语法:urljoin (baseurl, newurl, allowFrag=None)
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","?cat=7")
‘https://www.smelond.com?cat=7‘
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","abc")
‘https://www.smelond.com/abc‘
>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","/test/abc.html")
‘https://www.smelond.com/test/abc.html‘
>>> urllib.parse.urljoin("https://www.smelond.com","abc.html")
‘https://www.smelond.com/abc.html‘

urllib.parse 模块中的核心函数描述

urlparse(urlstr,defProSch=None,allowFrag=None)            将urlstr解析成各个组件,如果在urlstr中没有给定协议或方案,则使用defProtSch;allowFrag 决定是否允许有 URL 片段
urlunparse(urltup)                                        将 URL 数据(urltup)的一个元组拼成一个 URL 字符串
urljoin(baseurl, newurl, allowFrag=None)                  将 URL 的根域名和 newurl 拼合成一个完整的 URL;allowFrag 的作用和urlpase()相同

原文地址:https://www.cnblogs.com/smelond/p/8547469.html

时间: 2024-10-08 18:56:05

python urllib库的相关文章

python urllib库详解

Python的内置HTTP请求库 urllib.request  请求模块 urllib.error  异常处理模块 urllib.parse   url解析模块 urllib.robotparse    robots.txt解析模块 1 import urllib.request 2 from urllib.parse import urlparse,urlunparse,urljoin,urlencode 3 import http.cookiejar 4 from urllib impor

Python urllib库和requests库

1. Python3 使用urllib库请求网络 1.1 基于urllib库的GET请求 请求百度首页www.baidu.com ,不添加请求头信息: 1 import urllib.requests 2 3 4 def get_page(): 5 url = 'http://www.baidu.com/' 6 res = urllib.request.urlopen(url=url) 7 page_source = res.read().decode('utf-8') 8 print(page

python urllib 库

urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google >>> import urllib >>> f = urllib.urlopen('http://www.google.com.hk/') >>> firstLine = f.readline()   #读取html页面的第一行 >>>

Python urllib和urllib2模块学习

Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib和urllib2 这个 HTTP 客户端库.这里总结了一些 urllib和urlib2 库的使用细节. Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 一.urllib常用函数介绍: 1. urlopen()函数:即创建一个类文件对象为指定的 url 来读取. 可以使用help(urllib.urlopen)查看函数

Python爬虫的Urllib库有哪些高级用法?

本文和大家分享的主要是python爬虫的Urllib库的高级用法相关内容,一起来看看吧,希望对大家学习python有所帮助. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服.所以最重要的部分是存在于HTML中的,下面我 们就写个例子来扒一个网页下来. imp

Python爬虫入门三之Urllib库的基本使用

转自:http://cuiqingcai.com/947.html 那么接下来,小伙伴们就一起和我真正迈向我们的爬虫之路吧. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服.所以最重要的部分是存在于HTML中的,下面我们就写个例子来扒一个网页下来. impor

Python爬虫入门之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次

Python爬虫之Urllib库的基本使用

Python爬虫之Urllib库的基本使用 import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.read() 其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容.比如上面的两行代码,我们可以这么改写 # -*- coding: utf-8 -*- """ Cre

转 Python爬虫入门四之Urllib库的高级用法

静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般