网络请求模块的使用

网络请求模块

requests

介绍

requests 模块是可以模仿浏览器发送请求获取响应 requests 模块在python2,与python3中通用 requests模块能够自动帮助我们解压网页内容

学习资料

中文文档

requests模块的安装

pip install requests

如果你本地有python2,和python3两个环境,你想装在python3中,建议使用下面这种方式安装

pip3 install requests

requests模块的使用

基本使用

  • 使用方式

  • 代码讲解

  • response 常用属性

    • response.text 返回响应内容,响应内容为 str 类型

    • respones.content 返回响应内容,响应内容为 bytes 类型

    • response.status_code 返回响应状态码

    • response.request.headers 返回请求头

    • response.headers 返回响应头

    • response.cookies 返回响应的 RequestsCookieJar 对象

  • response.content 转换 str 类型

  • response.cookies 操作

自定义请求头

  • 使用方式

  • 代码讲解

    发送请求时添加 headers 参数作为自定义请求头

发送 GET 请求

  • 使用方式

  • 代码讲解

    发送请求时 params 参数作为 GET 请求参数

发送 POST 请求

  • 使用方式

  • 代码讲解

    发送请求时 data 参数作为 POST 请求参数

保存图片

  • 使用方式

  • 代码讲解

保存图片时后缀名和请求的后缀名一致

保存必须使用 response.content 进行保存文件

使用代理服务器

  • 作用

    • 让服务器以为不是同一个客户端在请求

    • 防止我们的真实地址被泄露,防止被追究

  • 使用代理的过程

  • 代理分类

  • 透明代理(Transparent Proxy):透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以查到你是谁。

  • 匿名代理(Anonymous Proxy):匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。

  • 混淆代理(Distorting Proxies):与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真

  • 高匿代理(Elite proxy或High Anonymity Proxy):可以看出来,高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。

    在使用的使用,毫无疑问使用高匿代理效果最好

    从使用的协议:代理ip可以分为http代理,https代理,socket代理等,使用的时候需要根据抓取网站的协议来选择

  • 使用方式

  • 代码讲解

发送请求时 proxies 参数设置代理

发送请求携带 Cookies

  • 使用方式

直接在自定义请求头中携带 Cookie

通过请求参数携带 Cookie 对象

  • 代码

  • 代码讲解

发送请求时 cookies 参数携带 Cookies

错误证书处理

  • 问题描述

  • 使用方式

  • 代码讲解

发送请求时 verify 参数设置为 False 表示不验证CA证书

超时处理

  • 使用方式

  • 代码讲解

发送请求时 timeout 参数设置为超时秒数

重试处理

  • 使用方式

  • 代码讲解

    安装 retrying 模块

retrying 模块可以通过装饰器模式对某个函数进行监控,如果该函数引发异常就会触发重试操作

pip install retrying

  • 对需要重试的函数进行装饰器设置

通过 @retry(stop_max_attempt_number=重试次数) 参数设置重试次数

urllib2

在python2 中使用urllib2网络库

使用流程

  1. 导入urllib2模块

  2. 发起请求获取响应数据

    1. 定义请求地址

    2. 自定义请求头

    3. 自定义请求对象

    4. 发送请求

  3. 处理响应内容

urllib

python3 中使用urllib网络库

urllib使用注意事项

  • 如果使用在URL中需要进行转义

  • 返回值是字节串,获取字符串内容需要进行 decode

Last updated

Was this helpful?