爬虫—requests模块

本文介绍了Python爬虫中常用的requests模块,包括其定义、get和post请求的使用方法,详细阐述了get请求的参数如params、data、json、headers等,并提供了实例和返回对象的属性值解析。同时,简要说明了post请求的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义

        requests模块是python的一个第三方模块,它是基于python自带的urllib模块封装的,用来发送http请求和获取返回的结果,操作很简单。

pip install requests
对于不需要headers中填写UA伪装的请求可使用urllib

#使用urllib模块中的方法进行图片数据的爬取
from urllib import request
url = 'https://pic.qiushibaike.com/system/pictures/12162/121623379/medium/B3PP8UJN3CK1M16C.jpg'
request.urlretrieve(url=url,filename='./qiubai.jpg')

二、requests库的方法

方法解释
requests.request()构造一个请求,支持以下各种方法
requests.get()获取html的主要方法
requests.head()获取html头部信息的主要方法
requests.post()向html网页提交post请求的方法
requests.put()向html网页提交put请求的方法
requests.patch()向html提交局部修改的请求
requests.delete()向html提交删除请求

 

 

 

 

 

 

 

 

1. 基本的 get 请求

import requests
response = requests.get(url,params,**kwargs(headers))
注解:
    (1)url:需要爬取的网站地址。
    (2)params:参数,url中的额外参数,字典或者字节流格式,可选。
    (3)**kwargs:12个控制访问的参数。

**kwargs有以下的参数,对于requests.get,其第一个参数被提出来了。

  • params:作为参数增加到url中,是以key1=value1&key2=value2的模式增加到url中 ,例如:kv = {‘key1: ’ values’, ‘key2’: ‘values’} 

  • r = requests.get(‘http:www.baidu.com’, params=kw)

  • data:字典,字节序或文件对象,重点作为向服务器提供或提交资源是提交,,作为request的内容,与params不同的是,data提交的数据并不放在url链接里, 而是放在url链接对应位置的地方作为数据来存储。,它也可以接受一个字符串对象。

  • json:json格式的数据, json合适在相关的html,http相关的web开发中非常常见, 也是http最经常使用的数据格式, 他是作为内容部分可以向服务器提交。 
    例如:kv = {”key1’: ‘value1’} 
    r = requests.request(‘POST’, ‘http:www.baidu.com‘, json=kv)

  • headers:字典是http的相关语,对应了向某个url访问时所发起的http的头i字段, 可以用这个字段来定义http的访问的http头,可以用来模拟任何我们想模拟的浏览器来对url发起访问。 
    例子:headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Mobile Safari/537.36"}
    r = requests.request(‘POST’, ‘http:www.baidu.com‘, headers=headers )

  • cookies:字典或CookieJar,指的是从http中解析cookie

  • auth:元组,用来支持http认证功能

  • files:字典, 是用来向服务器传输文件时使用的字段。 
    例子:fs = {‘files’: open(‘data.txt’, ‘rb’)} 
    r = requests.request(‘POST’, ‘http:www.baidu.com‘, files=fs)

  • timeout: 用于设定超时时间, 单位为秒,当发起一个get请求时可以设置一个timeout时间, 如果在timeout时间内请求内容没有返回, 将产生一个timeout的异常。

  • proxies:字典, 用来设置访问代理服务器。

  • allow_redirects: 开关, 表示是否允许对url进行重定向, 默认为True。

  • stream: 开关, 指是否对获取内容进行立即下载, 默认为True。

  • verify:开关, 用于认证SSL证书, 默认为True。

  • cert: 用于设置保存本地SSL证书路径

(1)实例

import requests
# 参数
data = {
    "name":"germey",
    "age":22
}
# 请求载体的身份标识
headers = {
      "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}

response = requests.get("http://httpbin.org/get",params=data)
print(response.text)

(2)返回对象属性值

import requests
response = requests.get("http://douban.com")

response.text    - 字符串对象
response.content - bytes字节码对象

(3)获取json数据

import requests
import json
response = requests.get("http://httpbin.org/get")
print(type(response))            #是一个class返回对象<class 'requests.models.Response'>
print(type(response.text))       #是一个字符串文本对象<class 'str'>
print(response.text)             #是一个字符串文本
print(type(response.json()))     #是一个json字典对象<class 'dict'>
print(response.json())           #是一个json字典文本,数据与下面相同
print(json.loads(response.text)) #是一个json字典文本,数据与上面相同

# 而json.loads实际上是对返回的字符串对象进行一个json序列化操作,
# 实际上json.loads(response.text)=response.json()

2. POST请求(通常为ajax时使用)

(1)基本post请求

requests.post(url, data, **kwargs(headers))
解释:
    (1)url:向服务器发送url请求
    (2)data:提交表单的数据
    (3)**kwargs:添加请求头信息


1.案例

import requests
data = {"name":"germey","age":"22"}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
response = requests.post("http://httpbin.org/post",data=data,headers=headers)
print(response.text)
print(response.json())

(2)返回值中属性

response回复带有很多属性,常用的属性有:

1. 状态码: response.status_code   int类型
2. headers:response.headers       字典类型
3. cookies: response.cookies       cookies类型
4. url:     response.url           这个url就是我们请求的url          
5. history: response.history       list元组类型,我们访问的历史记录

参考博客:requests

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值