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"))

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

相关文章
|
人工智能 算法 编译器
C语言初阶测评题:测试你的基础知识和编程技能!!
C语言初阶测评题:测试你的基础知识和编程技能!!
355 1
|
Linux
win10+redhat8双系统安装(非虚拟机)
win10+redhat8双系统安装(非虚拟机)
442 0
|
6月前
|
API 数据处理 索引
电商API详解
本内容介绍了主流开放API的电商平台及其可获取的数据类型,如用户、商品、店铺及交易信息等,支持智能选品、极速上架、高效定价等功能。同时详解了API调用步骤,并提供电商应用开发指导。
|
12月前
|
算法 Java 调度
算法系列之贪心算法
在算法中,贪心算法(Greedy Algorithm)是一种常见的解决优化问题的算法。贪心算法的核心思想是:在每一步选择中都采取当前状态下最优的选择,即贪心的做出局部最优的决策,从而希望最终能够得到全局最优解。尽管贪心算法并不总是能够得到全局最优解,但在许多实际问题中,它能够提供足够好的解决方案,并且具有较高的计算效率。
515 7
算法系列之贪心算法
|
缓存 Linux
如何检查 Linux 内存使用量是否耗尽?
何检查 Linux 内存使用量是否耗尽?
580 58
|
机器学习/深度学习 存储 算法
【强化学习】常用算法之一 “Q-learning”
Q-learning算法是一种基于强化学习的无模型学习方法,通过学习到目标系统的Q值函数来解决智能体在给定环境下的最优决策策略问题。Q-learning算法是基于后验策略方法,即学习出目标系统的价值函数Q之后,通过使用某种策略来最大化该价值函数,称之为后验策略。Q-learning算法是偏差-方差权衡的算法,在偏差较高的情况下可以在基于模型的强化学习中找到一个接近最优策略的解决方案。同时它也具有较高的收敛速度和广泛的适用性,因为其只需要存储一个值函数,不需要存储模型。
1379 0
【强化学习】常用算法之一 “Q-learning”
|
存储 监控 安全
docker可能存在的问题有哪些?
【10月更文挑战第28天】docker可能存在的问题有哪些?
740 0
|
存储 人工智能 数据库
RAG流程优化(微调)的4个基本策略
在本文中,我们将介绍使用私有数据优化检索增强生成(RAG)的四种策略,可以提升生成任务的质量和准确性。通过使用一些优化策略,可以有效提升检索增强生成系统的性能和输出质量,使其在实际应用中能够更好地满足需求。
570 0
|
小程序 JavaScript 前端开发
点餐小程序实战教程08-购物车功能开发
点餐小程序实战教程08-购物车功能开发