iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python技能树共建之python urllib 模块
  • 408
分享到

Python技能树共建之python urllib 模块

2024-04-02 19:04:59 408人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、python urllib 模块是什么二、使用方法上手案例urlopen() 返回对象的更多方法urllib.Request() 类urllib.parse三、提高场景err

一、Python urllib 模块是什么

urllib 模块是 Python 标准库,其价值在于抓取网络上的 URL 资源,入门爬虫时必学的一个模块。

不过更多的爬虫工程师上手学习的模块已经更换为 requests 了。

python3 中 urllib 模块包括如下内容。

  • urllib.request:请求模块,用于打开和读取 URL;
  • urllib.error:异常处理模块,捕获 urllib.error 抛出异常;
  • urllib.parse:URL 解析,爬虫程序中用于处理 URL 地址;
  • urllib.robotparser:解析 robots.txt 文件,判断目标站点哪些内容可爬,哪些不可以爬,但是用的很少。

二、使用方法

上手案例

打开一个测试站点,然后返回服务器响应内容。

from urllib.request import urlopen
with urlopen('https://www.example.net') as html:
    page = html.read()
print(page)

上述代码用到了 urllib.requests 模块,其内部定义了打开 URL 的函数,授权验证的方法,重定向,cookie 操作等方法。

代码中用到的 urlopen() 函数,就是打开一个 URL,该函数的语法格式如下所示:

urllib.request.urlopen(url, data=None, timeout=Socket._GLOBAL_DEFAULT_TIMEOUT,
            *, cafile=None, capath=None, cadefault=False, context=None)

参数描述如下所示:

  • url:请求地址;
  • data:发送到服务器的其他数据对象,默认为 None;
  • timeout:超时时间;
  • cafile 和 capath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HttpS 需要用到;
  • context:ssl.SSLContext 类型,用来指定 SSL 设置。

调用该对象的 read() 方法,可以读取到整个网页数据。

其余的函数与文件读取类似,分别是 readline()readlines()

还可以调用对象的 getcode() 方法,获取网页状态码。

print(html.getcode()) # 返回 200

urlopen() 返回对象的更多方法

使用 urlopen() 可以得到一个 HTTPResposne 类型的对象,它包括上文提及的 read() 方法,getcode() 方法,除此之外,还有如下内容可以使用。

  • getheaders():获取请求头内容;
  • getheader(name):获取指定请求头;
  • msg:信息属性;
  • version:版本属性;
  • status:状态属性。

urllib.Request() 类

URL 请求抽象类,使用它可以扩展更多的请求配置,其构造方法如下所示:

def __init__(self, url, data=None, headers={},
                 origin_req_host=None, unverifiable=False,
                 method=None)

其参数说明如下所示:

  • url:请求地址,必选参数;
  • data:请求参数,必须为 bytes 类型数据,可以使用 urlencode() 进行编码;
  • headers:字典类型,请求头设置;
  • origin_req_host:请求的主机地址,IP 或域名;
  • method:请求方法。

测试代码如下所示:

from urllib import request, parse
url = 'http://httpbin.org/post'
headers = {
    'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) 你的UA'
}
dict = {
    'name': 'xiangpica'
}
# 转换数据类型
data = bytes(parse.urlencode(dict), encoding='utf8')
# 实例化对象
req = request.Request(url=url, data=data, headers=headers, method='POST')
# 添加请求头
req.add_header('HOST', 'httpbin.org')
# 发送数据
response = request.urlopen(req)
print(response.read().decode('utf-8'))

urllib.parse

该模块主要用于解析 URL,函数原型如下所示:

urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)

参数说明如下:

  • urlstring:URL 地址;
  • scheme:协议类型,可用的包括 file、ftp、Gopher、hdl、http、https、imap、mailto、 mms、news、nntp、prospero、rsync、rtsp、rtspu、sftp、 sip、sips、snews、svn、svn+ssh、telnet……;
  • allow_fragments:是否忽略 URL 中的 fragment 部分。

标准的 URL 格式如下:

scheme://netloc/path;params?query#fragment

说明如下所示:

  • scheme:URL 协议;
  • netloc:域名和端口;
  • path:路径;
  • params:最后一个路径元素参数,不常用;
  • query:查询字符串
  • fragment:片段标志。
from urllib.parse import urlparse
result = urlparse('http://www.example.com/index.html;info?id=10086#comment')
print(type(result), result)
print(result.scheme, result[0])
print(result.netloc, result[1])
print(result.path, result[2])
print(result.params, result[3])
print(result.query, result[4])
print(result.fragment, result[5])

运行结果如下所示:

<class 'urllib.parse.ParseResult'> ParseResult(scheme='http', netloc='www.example.com', path='/index.html', params='info', query='id=10086', fragment='comment')
http http
www.example.com www.example.com
/index.html /index.html
info info
id=10086 id=10086
comment comment

urlparse() 返回结果是一个 ParseResult 类型的对象。

其余内容

  • urlunparse() 方法与上述方法逻辑相反;
  • urljoin() 方法用于拼接链接;
  • urlencode():格式化请求参数;
  • quote():将内容转换为 URL 编码格式,尤其是转换中文字符
  • unquote():对 URL 进行解码。

三、提高场景

error 模块

在 urllib 中,error 模块定义异常,其包含如下类:

  • URLError:OSError 的一个子类,用于处理程序在遇到问题时会引发此异常;
  • HTTPError:URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候

到此这篇关于Python技能树共建之python urllib 模块的文章就介绍到这了,更多相关 python urllib 模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python技能树共建之python urllib 模块

本文链接: https://www.lsjlt.com/news/118215.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python技能树共建之python urllib 模块
    目录一、Python urllib 模块是什么二、使用方法上手案例urlopen() 返回对象的更多方法urllib.Request() 类urllib.parse三、提高场景err...
    99+
    2024-04-02
  • Python 爬虫 urllib模块:p
    本程序以爬取 'http://httpbin.org/post' 为例格式:  导入urllib.request  导入urllib.parse  数据编码处理,再设为utf-8编码:  bytes(urllib.parse.urlenco...
    99+
    2023-01-31
    爬虫 模块 Python
  • Python的urllib模块怎么用
    这篇文章主要介绍了Python的urllib模块怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python的urllib模块怎么用文章都会有所收获,下面我们一起来看看吧。一、Python urllib 模...
    99+
    2023-06-30
  • Python学习:使用urllib模块读
    request 还是requests? 来自Python小白真诚的求助!没办法,只能求助Google了! 原来,Requests模块是一个用于网络访问的模块,网络访问就是利用某些参数发送请求,然后获取我们想要的信息。其实类似的模块...
    99+
    2023-01-31
    模块 Python urllib
  • python中的urllib模块中的方法
    python urllib.request之urlopen函数urllib是基于http的高层库,它有以下三个主要功能:(1)request处理客户端的请求(2)response处理服务端的响应(3)parse会解析url下面讨论的是req...
    99+
    2023-01-31
    模块 方法 python
  • python爬虫之请求模块urllib的基本使用
    目录前言urllib的子模块HttpResponse常用方法与属性获取信息urlli.parse的使用(一般用于处理带中文的url)✅爬取baidu官网HTML源代码✅添加请求头信息...
    99+
    2024-04-02
  • Python网络编程之HTTP客户端模块urllib与urllib3
    一、urllib 概述: urllib是Python中请求url连接的官方标准库,就是你安装了python,这个库就已经可以直接使用了,基本上涵盖了基础的网络请求功能。在Python...
    99+
    2024-04-02
  • 【python技能树】python简介
    1 Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言: 开发过...
    99+
    2023-09-01
    python 开发语言 python技能树 python基础知识
  • python爬虫urllib中的异常模块处理
    目录urllib中的异常处理url的组成部分URLErrorHTTPError简介Urllib.error 模块异常处理urllib中的异常处理 在我们写爬虫程序时,若出现url中的...
    99+
    2024-04-02
  • Python中urllib爬虫、request模块和parse模块的示例分析
    小编给大家分享一下Python中urllib爬虫、request模块和parse模块的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!urlliburlli...
    99+
    2023-06-14
  • python之os模块
    #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块:import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) #chdir()改变当前工作目录 #操作时如果书写完整的路径则不...
    99+
    2023-01-30
    模块 python os
  • python模块之collections
    计数器 Counter 计数元素迭代器 elements() 计数对象拷贝 copy() 计数对象清空 clear() from collections import Counter #import collection...
    99+
    2023-01-30
    模块 python collections
  • Python 之os模块
    os模块提供了访问多个操作系统服务的功能,os模块的子模块os.path模块也包含了一些文件目录常用操作的函数。access(path, mode) :检测对文件的访问权限。>>> os.access('/root/zhu...
    99+
    2023-01-31
    模块 Python os
  • Python 之 pexpect模块
    python安装setuptools模块之后,便可使用easy_install来安装python的第三方扩展模块,默认安装路径是:/usr/lib/python2.6/site-packages/easy_install 模块名 #可以直接...
    99+
    2023-01-31
    模块 Python pexpect
  • python模块之hashlib
    hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点:1. adler32及crc32哈希由z...
    99+
    2023-01-31
    模块 python hashlib
  • Python 之 shutil模块
    shutil模块用于执行高级的文件操作,如复制,移动重命名等。>>> shutil. shutil.Error shutil._samefile shutil.__all__ s...
    99+
    2023-01-31
    模块 Python shutil
  • python之netifaces模块
    #!/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- """ Create Date:        2016/12/26 Create Time:        17:53 ...
    99+
    2023-01-31
    模块 python netifaces
  • python之sys模块
    sys.argv 命令行参数List,第一个元素是程序本身路径;类似于shell的位置参数 sys.argv[0] 表示程序自身sys.argv[1] 表示程序的第一个参数sys.argv[2] 表示程序的第二个参数 #!/usr...
    99+
    2023-01-31
    模块 python sys
  • Python模块之pexpect
    pexpect是一个用来启动子程序并对其进行自动控制的 Python 模块。pexpect 可以用来和像 ssh、passwd、telnet 、rsync等命令行程序进行自动交互下面是我用pexpect写的一个脚本,是用来执行远程主机命令,...
    99+
    2023-01-31
    模块 Python pexpect
  • Python之Subprocess模块
    前言其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下。 如果由su...
    99+
    2023-01-31
    模块 Python Subprocess
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作