Python3网络爬虫教程11——Requests包(HTTP for Humans)

2024-06-04 18:08

本文主要是介绍Python3网络爬虫教程11——Requests包(HTTP for Humans),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上接:
Python3网络爬虫教程10——ajax异步请求(爬取豆瓣电影数据 )
https://blog.csdn.net/u011318077/article/details/86633196

7. Requests

  • HTTP for Humans-献给人类,更好用,更简洁
  • 继承了urllib的所有特性
  • 底层使用的是urllib3
  • 开源地址:https://github.com/requests/requests
  • 中文文档:http://docs.python-requests.org/zh_CN/latest/#

7.1. get请求

  • 有两种方式
    • requests.get(url)
    • requests.request(‘get’, url)
    • 可以带有headers和params参数
    • 参考案例43_21
import requests# 两种请求方式url = 'http://www.baidu.com'rsp = requests.get(url)
print(rsp.text)rsp = requests.request('get', url)
print(rsp.text)
  • get返回的内容
    • 参考案例43_22
# 利用参数headers和params研究返回的内容
# 研究返回的结果import  requests# 完整的访问url是下面的url加上参数组成的完整url
url = 'http://www.baidu.com/s?'kw = {'wd': '美女'
}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2854.400'
}rsp = requests.get(url, params=kw, headers=headers)print(rsp.text)
print(rsp.content)
print(rsp.url)
print(rsp.encoding)
print(rsp.status_code)

7.2. post请求

  • rsp = requests.post(url, data=data)
  • 参考案例43_23
# 本案例来自案例43_5,使用的urllib库
# 本案例使用requests库"""
大致流程:
1. 利用data构造内容
2. 返回一个json格式的内容
3. 结果就应该是girl的释义
"""# 本案例使用requests,会发现会比43_5案例编码简洁很多
# data直接使用字典,不用编码,json数据可以直接读取也不用解码import requestsbaseurl = 'https://fanyi.baidu.com/sug'# 存储用来模拟formdata的数据一定是字典格式
wd = input('Input your keyword: ')
data = {'kw': wd}# 43_5中需要对data进行编码,编码为字节
# data = parse.urlencode(data).encode('utf-8')
# requests中可以直接使用字典格式的data
rsp = requests.post(baseurl, data=data)# 直接取出json数据就是一个python格式的字典了
json_data = rsp.json()# 查看结果是一个字典,取出字典中键data对应的值是一个列表,
# 列表中又是有多个字典,每个字典中有两个键值对,将两个值取出,一一对应
for item in json_data['data']:print(item['k'], "-----", item['v'])

7.3. proxy代理

  • proxy

    proxies = {
    ‘http’: ‘address of proxy’,
    ‘https’: ‘address of proxy’,
    }

    rsp = requests.request(‘get’, ‘http//:xxx’)

  • 代理有可能报错,如果使用人数多,考虑安全问题,代理可能被强行关闭

7.4. 用户验证

  • 代理验证

    • 可能需要使用HTTP basic Auth, 类似下面
    • 格式为:用户名:密码@代理地址:端口地址
      proxy = {‘http’: ‘name:123456@192.168.1.123:4444’}
      rsp = requests.get(‘http://www.baidu.com’, proxies = proxy)
  • web客户端验证

    • 遇到web客户端验证,需要添加auth=(用户名,密码)
      auth=(‘name’, ‘12346’)
      rsp=requests.get(‘http://www.baidu.com’, auth = auth)

7.5. cookie

  • requests可以自动处理cookie信息

    • rsp = requests.get(‘http//:xxx’)
    • 如果对方服务器传送过来cookie信息,则可以通过反馈的cookie属性得到
    • 返回一个cookiejar的实例
      • cookiejar = rsp.cookies
      • cookiejar的实例可以转成字典
      • cookiedict = requests.utils.dict_from_cookiejar(cookiejar)

7.6. session

  • 跟#4.中的服务器中的session不是一个东东

  • 模拟一次会话,从客户端浏览器链接服务器开始,到客户端浏览器断开

  • 上述过程中的信息保存在session中

    创建session对象,可以保持cookie值
    ss = requests.session()
    headers = {‘User-Agent’: ‘xxxxxx’}
    data = {‘name’: ‘xxxxx’}
    此时,由创建的session管理请求,负责发出请求
    ss.post(‘URL’, data = data, headers = headers)
    rsp = ss.get(‘xxxxxx’)

7.7. https请求验证ssl证书

  • 参数verify负责表示是否需要验证ssl证书,默认是True

  • 如果不需要验证ssl证书,则设置成False表示关闭

  • 写法

      rsp = requests.get('https://www.12306.com', verify = False)
    

下接:
Python3网络爬虫教程12——页面解析及正则表达式的使用
https://blog.csdn.net/u011318077/article/details/86633330

这篇关于Python3网络爬虫教程11——Requests包(HTTP for Humans)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030734

相关文章

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转