详解Python 重学requests发起请求的基本方式

1. 简介

Python是一种非常流行的编程语言,它广泛应用于机器学习、数据分析、网络爬取等领域。在进行爬虫开发时,requests是Python程序员们常用的一个第三方库。requests提供了一些方便的API,使得我们可以轻松地发起HTTP请求,并处理服务器的响应。本文将介绍Python requests库的基础知识,帮助您快速上手进行网络爬虫开发。

2. requests库的安装

在使用requests库之前,需要先进行安装。您可以在命令行中使用pip命令进行安装。

pip install requests

安装完成之后,我们就可以开始使用requests库了。

3. 发起GET请求

3.1 基本的GET请求

发起GET请求通常是我们进行网络爬取的第一步。requests库提供了get()函数,可以方便地发起GET请求。

import requests

url = 'https://www.baidu.com'

response = requests.get(url)

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:使用requests.get()函数发起GET请求,并将响应结果保存在response变量中。

第5行:将响应内容输出到控制台。

执行以上代码,您将会看到服务器响应的HTML页面。

3.2 带参数的GET请求

GET请求通常需要传递一些参数,比如查询字符串参数。requests库提供了params参数,可以让我们方便地传递这些参数。

import requests

url = 'https://www.baidu.com/s'

params = {'wd': 'Python'}

response = requests.get(url, params=params)

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:设置查询字符串参数,并保存在params变量中。

第5行:使用requests.get()函数发起GET请求,并将params传递给它。

第6行:将响应内容输出到控制台。

执行以上代码,您将会看到百度搜索Python的结果页面。

4. 发起POST请求

4.1 基本的POST请求

POST请求通常用于提交表单或者上传文件。使用requests库发起POST请求非常方便,只需要调用post()函数并传递参数即可。

import requests

url = 'https://www.baidu.com/s'

data = {'wd': 'Python'}

response = requests.post(url, data=data)

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:设置表单数据,并保存在data变量中。

第5行:使用requests.post()函数发起POST请求,并将data传递给它。

第6行:将响应内容输出到控制台。

执行以上代码,您将会看到百度搜索Python的结果页面。

4.2 带文件上传的POST请求

除了传递表单数据之外,我们还可以通过requests库进行文件上传。只需要将文件数据传递给files参数即可。

import requests

url = 'http://httpbin.org/post'

files = {'file': open('example.txt', 'rb')}

response = requests.post(url, files=files)

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:使用open()函数打开要上传的文件,并保存在files变量中。

第5行:使用requests.post()函数发起POST请求,并将files传递给它。

第6行:将响应内容输出到控制台。

执行以上代码,您将会看到服务器返回的请求信息,其中包括了文件上传成功的信息。

5. 设置请求头

在发起HTTP请求时,我们可以设置请求头,以便向服务器传递额外的信息。requests库允许我们自定义请求头,只需要将请求头信息传递给headers参数即可。

import requests

url = 'https://www.baidu.com'

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}

response = requests.get(url, headers=headers)

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:设置请求头,并保存在headers变量中。

第5行:使用requests.get()函数发起GET请求,并将headers传递给它。

第6行:将响应内容输出到控制台。

执行以上代码,您将会看到服务器响应的HTML页面。

6. 异常处理

在进行网络爬取时,我们需要注意一些异常情况。比如服务器可能会返回404、500等错误状态码,或者网络连接可能会中断。为了避免程序因为这些异常而崩溃,我们需要进行相应的异常处理。requests库提供了一些内置的异常类,可以帮助我们进行异常处理。

import requests

url = 'https://www.baidu.com'

try:

response = requests.get(url)

response.raise_for_status()

except requests.exceptions.HTTPError as e:

print(e)

except requests.exceptions.ConnectionError as e:

print(e)

except requests.exceptions.Timeout as e:

print(e)

except requests.exceptions.RequestException as e:

print(e)

else:

print(response.text)

代码解释:

第1行:导入requests库。

第3行:设置要请求的URL。

第4行:使用try...except语句进行异常处理。

第5行:使用requests.get()函数发起GET请求,并将响应结果保存在response变量中。

第6行:如果服务器返回了异常状态码(比如404、500等),将会抛出HTTPError异常。

第7行:如果发生连接错误,将会抛出ConnectionError异常。

第8行:如果请求超时,将会抛出Timeout异常。

第9行:如果发生其他异常,将会抛出RequestException异常。

第10行:如果没有发生异常,将会将响应结果输出到控制台。

执行以上代码,您将会看到百度首页的HTML页面。

7. 总结

本文主要介绍了Python requests库的基础知识,包括发起GET和POST请求、带参数的请求、带文件上传的请求、设置请求头和异常处理等方面。requests库非常方便易用,可以帮助我们快速进行网络爬取开发。希望本文能够帮助您入门网络爬虫开发。

后端开发标签