Python网络请求模块urllib与requests使用介绍

1. urllib模块

urllib是Python标准库中提供的一个用于处理URL请求的模块,它包含四个子模块:urllib.request、urllib.parse、urllib.error和urllib.robotparser。这些子模块分别用于发送HTTP请求、解析URL、处理错误和解析robots.txt文件。

使用urllib发送HTTP请求的基本步骤如下:

1.1 发送GET请求

使用urllib模块发送GET请求可以通过调用urllib.request.urlopen()方法来实现:

import urllib.request

response = urllib.request.urlopen('http://www.example.com')

html = response.read()

print(html)

在上述代码中,urlopen()方法接受一个URL作为参数,返回一个类文件对象,可以通过调用read()方法获取服务器响应的内容。

1.2 发送POST请求

要发送POST请求,需要构造一个包含POST数据的请求对象,并通过调用urlopen()方法发送请求:

import urllib.request

import urllib.parse

data = urllib.parse.urlencode({'key': 'value'}).encode('utf-8')

request = urllib.request.Request('http://www.example.com', data=data)

response = urllib.request.urlopen(request)

html = response.read()

print(html)

在上述代码中,使用urllib.parse.urlencode()方法将POST数据转换为URL编码的字符串,并使用encode()方法将字符串转换为字节流。然后使用urllib.request.Request()方法创建一个请求对象,通过传入URL和POST数据,最后通过调用urllib.request.urlopen()方法发送请求。

2. requests模块

requests是Python第三方库,使用它可以更方便地发送HTTP请求。

使用requests发送HTTP请求的基本步骤如下:

2.1 安装requests

要使用requests模块,首先需要安装它。可以使用pip命令来安装:

pip install requests

2.2 发送GET请求

使用requests模块发送GET请求可以直接调用get()方法:

import requests

response = requests.get('http://www.example.com')

html = response.text

print(html)

在上述代码中,get()方法接受一个URL作为参数,并返回一个Response对象,可以通过调用text属性获取服务器响应的内容。

2.3 发送POST请求

要发送POST请求,需要构造一个包含POST数据的字典对象,并通过调用post()方法发送请求:

import requests

data = {'key': 'value'}

response = requests.post('http://www.example.com', data=data)

html = response.text

print(html)

在上述代码中,post()方法接受一个URL和一个字典对象作为参数,并返回一个Response对象,可以通过调用text属性获取服务器响应的内容。

总结

urllib和requests是两个常用的Python网络请求模块,它们分别提供了不同的功能和使用方法。urllib是Python标准库中自带的模块,可以发送HTTP请求、解析URL等;而requests是第三方库,使用起来更方便,可以通过调用get()和post()方法发送GET和POST请求。

使用urllib发送GET请求的基本步骤是先调用urlopen()方法发送请求,再通过调用read()方法获取响应的内容;发送POST请求的基本步骤是先将POST数据转换为URL编码的字符串,再使用Request()方法创建一个请求对象,最后调用urlopen()方法发送请求。

使用requests发送HTTP请求的基本步骤是先安装requests库,再调用get()方法发送GET请求,或者调用post()方法发送POST请求。发送GET请求时,直接传入URL作为get()方法的参数,并通过调用text属性获取响应的内容;发送POST请求时,将POST数据封装到一个字典对象中,并通过data参数传递给post()方法,同样使用text属性获取响应的内容。

后端开发标签