Python爬虫教程-Requests: 让 HTTP 服务人类

系列文章目录



前言

在网络时代,与服务器进行数据交互是许多应用程序不可或缺的一部分。为了满足这一需求,Python提供了一款强大而简单易用的库——Requests。通过Requests,我们能够以人类友好的方式发送HTTP请求,并轻松处理服务器的响应。

本教程旨在为初学者提供Requests库的基础知识,帮助大家快速上手并应用于实际项目中。在这里,你将学习到如何安装Requests库、发送基本的GET请求以及添加headers和查询参数等核心操作。同时,我们还会介绍响应对象的常用属性,让你能够更全面地掌握服务器的响应信息。

无论你是Web开发者、数据分析师还是网络爬虫爱好者,Requests都将成为你与服务器交互的得力助手。希望通过本教程,你能够快速掌握Requests的基本用法,并在实际应用中发挥出它的强大功能。让我们一同进入Requests的世界,探索与服务器交互的无限可能吧!


一、Requests: 让 HTTP 服务人类

尽管Python标准库中的urllib模块已经提供了许多常用的HTTP功能,但其API的使用体验并不友好。相比之下,Requests库自称是"HTTP for Humans",意味着它提供了更简洁方便的API,让人类使用HTTP服务更加轻松顺畅。

Requests是Python的一个HTTP库,它的底层其实使用的是urllib库执行实际的HTTP请求,但表面上对urllib进行封装并提供更友好的API,使得实际使用中requests相比urllib更加方便易理解。因此,它在继承了urllib所有特性的同时又可以安全地为人类所使用。 具体而言,Requests支持HTTP连接保持和连接池、使用cookie保持会话、文件上传、自动确定响应内容的编码、国际化的URL以及POST数据自动编码等功能,这些功能都大大简化了HTTP请求的处理过程。

1. Requests的优点

  1. 人性化的API设计:相比urllib模块,Requests的API更加友好,大大提高了开发者的使用效率。
  2. 完备的文档支持:Requests提供非常详尽的文档,包括API文档、用户指南等,便于开发者学习和使用。更难得的是,它还提供中文文档,这对于中文用户来说是一个极大的便利。
  3. 跨平台支持:Requests支持Python 2.6到3.5的版本,并且可以在PyPy下运行,这让Requests在不同的平台上都有很好的适应性。
  4. 基于urllib的底层实现:Requests基于urllib进行底层实现,保证了其稳定性和效率,同时又通过封装提供了更简洁的接口,可谓集稳定性和易用性于一身。
  5. 开源项目,活跃社区:Requests是一个开源项目,这意味着任何人都可以查看、使用、修改和分发其源代码。这不仅可以增加开发者的信任度,也有助于形成一个围绕该项目的活跃社区,能快速解决遇到的问题。

中文文档: http://docs.python-requests.org/zh_CN/latest/index.html
开源地址: https://github.com/kennethreitz/requests

二、安装方式

Requests库可以通过pip或easy_install进行安装。以下是两种安装方式:

使用pip安装:

$ pip install requests

使用easy_install安装:

$ easy_install requests

安装完成后,您就可以开始使用Requests库来发送HTTP请求了。

三、基本的GET请求

1. 发送基本的GET请求

要使用Requests库发送基本的GET请求,只需要使用requests.get(url)方法,其中url是您要发送请求的网址。这将返回一个响应对象,其中包含了服务器的响应内容。以下是一个简单的示例:

# 第一步,导入requests库
import requests

# 使用get方法发送请求
response = requests.get("http://www.baidu.com/")

这将向指定的URL发送一个GET请求,并将响应存储在response对象中。

2. 添加headers和查询参数

为了更灵活地发送GET请求,您可以添加headers和查询参数:

  • 要添加headers,请在请求中传入headers参数,并为其提供一个字典,其中包含您要发送的请求头信息。
  • 要添加查询参数,可以使用params参数,向其提供一个字典,其中包含您要添加的查询参数及其对应的值。Requests库会自动将字典转换为URL编码的查询字符串。
import requests  
  
kw = {'wd': '长城'}  
headers = {  
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"  
}  
  
# params接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,无需使用urlencode()  
response = requests.get("http://www.baidu.com/s?", params=kw, headers=headers)  
  
# 查看响应内容,response.text返回的是Unicode格式的数据  
print(response.text)  
  
# 查看响应内容,response.content返回的字节流数据(注意这里有个笔误,原文中是respones.content,应改为response.content)  
print(response.content)  
  
# 查看完整url地址  
print(response.url)  
  
# 查看响应头部字符编码  
print(response.encoding)  
  
# 查看响应状态码  
print(response.status_code)

3. 响应对象的常用属性

在这个例子中,我们向http://www.baidu.com/s?发送了一个带有查询参数和请求头的GET请求。我们通过打印response.text查看响应的文本内容,也可以通过response.content查看响应的原始二进制内容。同时,我们还可以获取到完整的URL地址、响应的字符编码以及响应的状态码。
下面是响应对象的常用属性,很重要需要记住:

  • response.text:返回响应的文本内容,Requests会自动解码响应内容,您可以直接获得Unicode格式的数据。
  • response.content:返回响应的原始二进制内容,适用于处理图片等二进制文件。
  • response.url:返回请求的完整URL地址,这在使用查询参数时非常有用。
  • response.encoding:返回响应的字符编码,让您了解响应内容的编码方式。
  • response.status_code:返回响应的状态码,用于检查请求是否成功以及了解服务器的处理结果。

总结

本文将带你初步认识requests库。requests库学起来非常的简单,你会发现无论是发送基本的GET请求还是添加headers和查询参数,Requests库都提供了简洁易用的接口,让HTTP请求的处理更加简单和高效。

响应的常用属性需要记忆,后面会经常用到。一定要注意区分contenttext的区别,知道在何时该用那种方式获取相应的响应内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值