Pandas urllib模块的用法及应用场景是什么
Admin 2022-08-27 群英技术资讯 407 次浏览
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()
可以得到一个 HTTPResposne
类型的对象,它包括上文提及的 read()
方法,getcode()
方法,除此之外,还有如下内容可以使用。
getheaders()
:获取请求头内容;getheader(name)
:获取指定请求头;msg
:信息属性;version
:版本属性;status
:状态属性。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'))
该模块主要用于解析 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 进行解码。在 urllib
中,error
模块定义异常,其包含如下类:
URLError
:OSError 的一个子类,用于处理程序在遇到问题时会引发此异常;HTTPError
:URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直接可以在外部指定参数,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法。
这篇文章主要介绍了Python 面向切面编程 AOP 及装饰器,AOP,就是面向切面编程,简单的说,就是动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程,更多相关资需要的小伙伴可以参考下面文章内容
python中求多个数字的和,可以使用sum()函数。sum()函数的语法为sum(iterable[, start]),其中,iterable – 可迭代对象,如:列表(list)、元组(tuple),start – 指定相加的参数。
在Python中有许许多多的内置函数和关键字,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作。本文将详细讲解他们的使用方法,需要的可以参考一下
这篇文章主要介绍了通过几个机器学习中最常用的概率分布为例,来看看如何从一个概率分布中采样,文章中的代码对我们的工作或学习具有一定价值,感兴趣的朋友可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008