Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解

  • Post category:Python

Python requests模块基础使用方法实例及高级应用

1. requests模块基础使用方法

1.1 安装requests模块

首先,在使用requests模块进行Python编程之前,我们需要先安装此模块。可以通过命令行使用pip进行安装,如下所示:

pip install requests

1.2 发送get请求

接下来,我们可以使用requests模块向指定的URL发送get请求,并将服务器返回的内容打印出来。示例代码如下:

import requests

url = 'http://www.baidu.com'
r = requests.get(url)
print(r.text)  # 打印响应内容

在该示例中,我们通过get()方法向URL发送了一个get请求,并将响应赋值给了变量r。我们通过r.text属性获取了响应的内容,并将其打印出来。

1.3 发送post请求

除了get请求,我们还可以使用requests模块发送post请求。通常,post请求用于向服务器提交表单数据等内容。下面是一个发送post请求的示例:

import requests

url = 'http://www.example.com/login'
data = {'username': 'admin', 'password': '123456'}  # 表单数据
r = requests.post(url, data=data)
print(r.text)  # 打印响应内容

在该示例中,我们首先构造了一个包含表单数据的字典数据data,然后使用post()方法向URL发送post请求,并将响应赋值给了变量r。我们同样使用r.text属性获取了响应的内容,并将其打印出来。

2. requests模块高级应用

2.1 自动登录网站

有时候,我们需要模拟登录网站以便访问需要登录权限的内容。这时,我们可以使用requests模块模拟登录网站。注意,对于需要登录的网站,我们往往需要构造好包含登录用表单数据的data变量,以及包含登录相关设置(如User-Agent)的headers变量。示例代码如下:

import requests

url = 'http://www.example.com/login'
data = {'username': 'admin', 'password': '123456'}  # 表单数据

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                  ' AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/58.0.3029.110 Safari/537.3'
}  # 登录时的一些设置

s = requests.Session()  # 创建一个session对象
s.post(url, data=data, headers=headers)  # 通过session对象发送post请求,完成登录

url2 = 'http://www.example.com/profile'  # 访问用户信息页面
r = s.get(url2)   # 通过session对象发送get请求
print(r.text)   # 打印响应内容(用户信息页面)

在该示例中,我们首先模拟登录了名为example.com的网站,然后通过Session对象实现了自动登录功能。在访问其他需要登录权限的内容时,我们只需使用该Session对象发送请求即可。

2.2 抓取网页源码及图片

最后,我们给出一个抓取网页源码及图片的示例代码。该代码将从某张图片的URL中下载该图片,并将网页源码及图片保存到指定的文件中。

import requests
import os

url = 'http://www.example.com/index.html'
r = requests.get(url)

with open('index.html', 'w') as f:
    f.write(r.text)   # 将网页源码保存到index.html文件中

url2 = 'http://www.example.com/image.jpg'
r2 = requests.get(url2)

with open(os.path.join('images', 'image.jpg'), 'wb') as f:
    f.write(r2.content)   # 将图片保存到images目录中

print('网页源码及图片下载完成')

在该示例中,我们向example.com发送了一个get请求,并将响应赋值给了变量r。我们可以使用r.text属性获取网页的源码(HTML代码),并将其保存到index.html文件中。同时,我们使用requests模块向example.com获取了一张图片的URL,然后将获得的二进制数据写入images文件夹下的image.jpg文件中。