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库非常方便易用,可以帮助我们快速进行网络爬取开发。希望本文能够帮助您入门网络爬虫开发。