urllib库的使用

简介: 简单实用

urllib的使用

urllib包含四个基本的模块。request:这是最基本的HTTP请求模块,可以模拟请求的发送。error:异常处理模块。如果出现请求异常,那么我们可以捕获这些异常,然后进行重试,使程序不会意外终止。parse:提供一个工具模块,提供了许多url的处理方法。robotparser:来网站的robots.txt文件,然后判断哪些文件可以爬,哪些网站不可以。

发送请求

尝试爬取Python官网

import urllib.request
response=urllib.request.urlopen("https://www.python.org")
print(response.read().decode("utf-8"))

通过简单的几行代码便得到了Python官网的源代码,输出得到的响应类型

import urllib.request
response=urllib.request.urlopen("https://www.python.org")
print(response.read().decode("utf-8"))
print(type(response))

输出结果为在这里插入图片描述
这是一个HTTPResponse类型的对象。主要的属性有read,getheader,以及getheader方法。调用read方法时我们可以得到响应的网页内容,调用status属性可以获取到响应结果的状态码,调用getheaders方法可以输出响应头信息,调用getheader方法并传入server参数即可获取响应头中server的值,例如

import urllib.request
response=urllib.request.urlopen("https://www.python.org")
# print(response.read().decode("utf-8"))
print(response.getheaders())
print(response.getheader("Server"))

输出结果:
在这里插入图片描述
说明网站是用Nginx来搭建的。

给链接传递一些参数

data参数:添加参数时要将bytes方法将参数转化为字节流编码格式的内容,即是bytes类型。何为bytes类型?我们要知道Python的字符串类型是utf-8显示类型的序列,而bytes数据类型则是utf-8格式的二进制的不可变序列。进行一些测试:

import urllib.request
import urllib.parse
data=bytes(urllib.parse.urlencode({"name":"germy"}),encoding="utf-8")
response=urllib.request.urlopen("https://www.httpbin.org/post",data=data)
print(response.read().decode("utf-8"))

输出结果:
在这里插入图片描述
form中有我们传入的参数,意味着我们模拟表单提交。
timeout参数:用于设置超时时间,单位为秒,如果超出了我们设置的这个时间,没有得到响应就会抛出异常,如果不指定参数就会使用全局默认时间,这个参数支持HTTP、HTTPS、FTP请求。

data=bytes(urllib.parse.urlencode({"name":"germy"}),encoding="utf-8")
# response=urllib.request.urlopen("https://www.httpbin.org/post",data=data)
response=urllib.request.urlopen("https://www.httpbin.org/post",timeout=0.1)
print(response.read().decode("utf-8"))

输出会报错,原因是超时,

相关文章
|
7月前
|
安全 测试技术 API
urllib3库的介绍以及使用
`urllib3`是Python的HTTP库,支持HTTP/HTTPS,自动管理连接池,提供代理、证书配置,重定向处理等功能。其优势在于连接池管理和HTTPS支持。要安装,使用`pip install urllib3`。发起HTTP请求如`http.request('GET', 'http//example.com')`。处理响应包括状态码、头部和内容。高级功能包括连接池管理、超时和重试策略。注意线程安全、资源释放及错误处理。官方文档和相关文章可提供更多信息。
212 0
|
数据采集 存储 机器人
【 ⑦】urllib库的基本使用
【 ⑦】urllib库的基本使用
114 0
|
编解码 Python
urllib库(中)
urllib库(中)
56 0
|
JSON 网络协议 数据格式
全方面掌握Requests库的使用
全方面掌握Requests库的使用
253 0
|
数据处理 Python
使用urllib库简单入门
使用urllib库简单入门
106 0
|
数据采集 XML 存储
urllib模块的使用
urllib模块的使用
62 0
|
前端开发 Python
urllib的一些使用案例
urllib的一些使用案例
158 0
|
数据采集 Python
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
131 0
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
|
Python
Python:urllib2模块GET和POST请求
Python:urllib2模块GET和POST请求
367 0