python爬虫requests库必备操作

孤寒者 发表于 2021/08/07 23:56:27 2021/08/07
【摘要】 python爬虫requests库必备操作

 👻上一系列博文[一篇万字博文带你入坑爬虫这条不归路]被众多爬虫爱好者/想要学习爬虫的小伙伴们阅读之后,很多小伙伴私信我说——大佬搞爬虫都是用的socket套接字嘛?👻

 😬(苦笑)“那肯定不是啊!python为我们封装了那么多伟大而又简单实用的爬虫库,”不过我想说的是,“ 学啥技术都是从底层抓起,万丈高楼平地起,它也是基于地基稳! 所以在入坑文中简单地介绍使用了下底层爬虫库——socket!”😬

 😜而本文,本博主就带领小伙伴们认真地学习一下Python中一大广为使用的爬虫库——Requests——专为人类而构建;有史以来下载次数最多的Python软件包之一!😜


             重点来啦!重点来啦!! 💗💗💗

  相信有不少小伙伴已经通过我的[上一系列博文]入坑爬虫,而本篇文讲解的Requests库也是学习爬虫之路的一大最为重要的知识点,在我们日后的爬虫开发中使用的最多的也是它哦!

学好Requests,你的爬虫之路日后将畅通无阻!!!


1.简介

Requests是一个优雅而简单的Python HTTP库,专为人类而构建。
Requests是有史以来下载次数最多的Python软件包之一,每天下载量超过400,000次。

  之前的urllib(后面会更新文章讲解哦——敬请期待!)做为Python的标准库,因为历史原因,使用的方式可以说是非常的麻烦而复杂的,而且官方文档也十分的简陋,常常需要去查看源码。与之相反的是,Requests的使用方式非常的简单、直观、人性化,让程序员的精力完全从库的使用中解放出来。

  Requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档&&英文官方文档

2.发起请求

根据入坑文可知爬虫:模拟浏览器发送请求,获取响应。那么首先我们就要学会使用Requests发起请求!

  Requests的请求不再像urllib一样需要去构造各种Request、opener和handler,直接使用Requests构造的方法,并在其中传入需要的参数即可。

源码:
def request(method, url,params=None, data=None, headers=None, cookies=None,
    timeout=None, allow_redirects=True, proxies=None,verify=None,  json=None):

参数详解:

(1)请求方法method:

每一个请求方法都有一个对应的API,比如GET请求就可以使用get()方法
在这里插入图片描述
而POST请求就可以使用post()方法,并且将需要提交的数据传递给data参数即可:
在这里插入图片描述
而其他的请求类型,都有各自对应的方法:
在这里插入图片描述

知识点补给站——POST请求方法的小知识点:
	应用场景:登录注册
	需要传输大文本内容的时候使用(post请求对长度没有要求)。

(2)统一资源定位符url

URL(Universal Resource Locator),即统一资源定位符。
在这里插入图片描述

(3)传递url参数params

  传递URL参数也不用再像urllib中那样需要去拼接URL,而是简单的,构造一个字典,并在请求时将其传递给params参数:

import requests
params = {'key': 'value1', 'key2': 'value2'}
resp = requests.get("http://httpbin.org/get", params=params)
print(resp.url)

在这里插入图片描述

小知识点:
  有时候我们会遇到相同的url参数名,但有不同的值,而python的字典又不支持键的重名,那么我们可以把键的值用列表表示:

import requests
params = {'key': 'value1', 'key2': ['value2', 'value3']}
resp = requests.get("http://httpbin.org/get", params=params)
print(resp.url)

在这里插入图片描述

知识点补给站:
	本文大多使用的URL站点是httpbin.org,它可以提供HTPP请求测试哦!

(4)传递form表单数据——data

  将放进data的数据转换为form表单数据,同时不能传json数据,json数据为null。注意:json和data二者只能同时存在其一
在这里插入图片描述在这里插入图片描述

(5)传递json数据——json

  将json对应的数据放进json参数里。

在这里插入图片描述在这里插入图片描述

(6)自定义headers

是不是很熟悉,这就是反爬第一阶段常用套路!

  如果想自定义请求的Headers,同样的将字典数据传递给headers参数。
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。