认识爬虫:如何使用 requests 模块模拟浏览器请求爬取网页信息?
程序员文章站
2022-05-09 21:23:17
...
requests 模块是对 urllib 的封装,它是一种伪装成浏览器对网页服务器发起请求从而获得响应的爬虫方式。不同于前面说到的下载整个网页的形式,requests 模块可以添加请求头、参数信息对具体的网页接口发起请求,是一种局部形式的爬虫技术。
requests 模块通过向服务器发送 http 请求获取数据,同时支持 get、post 的协议请求方法。在爬虫过程中,可以通过查询参数、请求头等信息的控制获得我们需要的响应的信息,同时 post 方法更是支持上传等方式获取等精准的爬虫数据。
1、GET 方法:不添加任何请求参数
1# -*- coding: UTF-8 -*-
2import requests
3
4# 定义请求的 url 地址
5url = "http://httpbin.org"
6
7# 使用 GET 方法发起请求
8response = requests.get(url=url)
9
10# 打印响应状态,200 表示成功
11print "响应状态",response.status_code
12# 打印网页文本
13print "网页文本:",response.text
2、GET 方法:添加请求参数
1# -*- coding: UTF-8 -*-
2import requests
3
4# 定义请求的 url 接口(需要请求的接口),假设接口 http://httpbin.org/get
5url = "http://httpbin.org/get"
6
7# 定义请求头部信息(字典类型)
8headers = {
9 "Accept": "*/*",
10 "Accept-Encoding": "gzip",
11 "User-Agent": "",
12}
13
14# 定义请求参数信息(字典类型)
15params = {'name': 'Python *', 'type': 'python'}
16
17# 使用 GET 方法发起请求(加入头部信息、加入参数信息)
18response = requests.get(url=url,headers=headers,params=params)
19
20# 打印响应状态,200 表示成功
21print "响应状态",response.status_code
22# 打印响应信息
23print "响应信息:",response.content
3、POST 方法:提交普通数据
1# -*- coding: UTF-8 -*-
2import requests
3
4# 定义请求的 url 接口(需要请求的接口),假设接口 http://httpbin.org/post
5url = "http://httpbin.org/post"
6
7# 定义请求头部信息(字典类型)
8headers = {
9 "Accept": "*/*",
10 "Accept-Encoding": "gzip",
11 "User-Agent": "",
12 # 定义请求数据格式、json
13 "Content-Type": "application/json",
14}
15
16# 定义请求参数信息(字典类型)
17params = {'name': u'Python *', 'type': 'python'}
18
19# 使用 POST 方法发起请求(加入头部信息、加入参数信息)
20# 设置这里的数据参数 data = params
21response = requests.post(url=url,headers=headers,data=params)
22
23# 打印响应状态,200 表示成功
24print "响应状态",response.status_code
25# 打印响应信息
26print "响应信息:",response.content
4、POST 方法:提交文件数据
1# 文件参数(字典类型)
2files = {
3 'file': (
4 # 文件名称
5 'python.png',
6 # 文件路径、打开文件
7 open('C:/python.png', 'rb'),
8 # 文件类型、图片
9 'image/png'),
10}
11
12# 使用 POST 方法发起请求(加入头部信息、加入参数信息)
13# 设置这里的数据参数 data = params(定义好的参数)
14# 设置文件参数 files = files(定义好的文件)
15response = requests.post(url=url, headers=headers, data=params, files=files)
16# 打印响应状态,200 表示成功
17print "响应状态", response.status_code
18# 打印响应信息
19print "响应信息:", response.content
更多精彩前往微信公众号【Python *】,专注于 python 技术栈,资料获取、交流社区、干货分享,期待你的加入~