Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 。requests目前基本上完全满足web请求的所有需求,requests库常用的方法有:get、post、put、delete、head、options

一、安装

通过pip安装(注意这里的requests记得加s

pip install requests

二、发送请求

使用 Requests 发送网络请求非常简单。导包,之后添加方法进行发起请求的方法变得简单,我们只需要着重关注一下发起请求的参数 ,10个重要的参数。

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

params:字典或者字节序列,作为参数增加到url中

headers:添加请求头,在进行爬虫时添加headers很有必要,如果不添加,很可能把你禁掉

cookies: 字典或CookieJar对象

timeout:设置的超时时间,秒为单位

proxies:字典类型,设定访问代理服务器,可以增加登录认证
(注意:设置的代理ip必须是能用的,有需要的建议网上购买)

import requests
test_url="http://httpbin.org/get"#测试url
params={"name1":"spider","name2":"爬虫"}#请求参数
#请求头
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"}
cookies={"sessionid":"hashcode","userid":"987654321",}
proxies={"http":"218.104.130.52:8888"}#示例代理ip
res=requests.get(test_url,params=params,headers=headers,cookies=cookies,timeout=10,proxies=proxies)
print(res.text)结果:
{"args": {"name1": "spider", "name2": "\u722c\u866b"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Cookie": "sessionid=hashcode; userid=987654321", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-60ea9b49-36fe6883718b9967412bd9cc"}, "origin": "218.104.130.52", "url": "http://httpbin.org/get?name1=spider&name2=\u722c\u866b"
}

allow_redirects: 值为True/False,默认为True, 重定向开关
很多网站是http开头,为了不影响老客户,原网站不懂,当访问http的原网址时,重定向到新的https网址,在requests中 allow_redirects默认是True,如果是False则不允许重定向,也就无法重定向新网址获取数据。

import  requests
url="http://github.com"
res_gh=requests.get(url,allow_redirects=False)
print(res_gh.text)
print(res_gh.status_code)结果:
空
301

verify:值为True/False,默认为True, 忽略证书验证
(我们访问的网址出现不安全时,这时就会出现关于SSL的报错,verify设置false就可以爬取了)

import requests
requests.urllib3.disable_warnings()#忽略warnning
url="https://inv-veri.chinatax.gov.cn/index.html"
res_ca=requests.get(url,verify=False)
res_ca.encoding="utf-8"
print(res_ca.text)

Json:JSON格式的数据,作为requests的内容
POST请求发送Json数据:

import requests
json={"json_style":"json-data"}#json
test_url="http://httpbin.org/post"#测试url
res=requests.post(test_url,json=json)
res.encoding="utf-8"#指定  字符串输出编码格式
print(res.text)#直接转换成字符串 非字节码结果:
{"args": {}, "data": "{\"json_style\": \"json-data\"}", "files": {}, "form": {}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "27", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9d83-0a3d189a0f8e108e40e1caad"}, "json": {"json_style": "json-data"}, "origin": "218.104.130.52", "url": "http://httpbin.org/post"
}

data: 是第二个控制参数,向服务器提交数据
POST请求发送Form表单数据:

import requests
data={"data1":"spider","data2":"123456"}#form 表单数据  有data  json为null
test_url="http://httpbin.org/post"#测试url
res=requests.post(test_url,data=data)
print(res.text)结果:
{"args": {}, "data": "", "files": {}, "form": {"data1": "spider", "data2": "123456"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "25", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9ddc-66f1567b16aa914a69764c3d"}, "json": null, "origin": "218.104.130.52", "url": "http://httpbin.org/post"
}

注意jsondata 不可以同时添加,同时添加会造成json中没有数据


三、response对象

常用属性:

import requests
test_url="http://httpbin.org/get"#测试url
res=requests.get(url=test_url)
print(res.text)#直接转换成字符串 非字节码
print(res.content)#图片数据 使用此参数
print(res.status_code)#状态码
print(res.json()["headers"]["User-Agent"])#自动转换成 字典格式
print(res.headers)#响应头
print(res.cookies)#响应cookie
print(res.url)#请求的url
print(res.request.url)#请求的url
print(res.request.headers)#请求头

四、session方法

session方法是requests库发起请求的一种方法,这种方法会自动保存访问页面得到的cookie值,从而再次访问的时候会自动携带cookie,使得操作cookie方便,不需要我们自己添加cookie了。常用于登录;

requests与session发起请求对比

import requestsindex_url="http://www.baidu.com"
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"}
res=requests.get(index_url,headers=headers)
print("请求头信息********requests*******")
print(res.request.headers)结果:
请求头信息********requests*******
{'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'BAIDUID=835160CB3530E3CFD5EB427D5E848CD0:FG=1; BIDUPSID=835160CB3530E3CF266788D53A9B383D; PSTM=1626055033; BD_LAST_QID=17570873450330636283'}

#session的使用
index_url="http://www.baidu.com"
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"}
session=requests.session()#创建session对象
session.headers=headers#添加请求头
res_ss=session.get(index_url)
print("请求头信息********session*******")
print(res_ss.request.headers)结果:
请求头信息********session*******
{'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Cookie': 'BAIDUID=11D1727367960A85924002C72FF29721:FG=1; BIDUPSID=11D1727367960A851936876B050ED76B; PSTM=1626055034; BD_LAST_QID=14539128174352067748'}

爬虫学习笔记(三)—— requests库相关推荐

  1. Python学习笔记:requests库

    Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...

  2. python 爬虫学习入门6 requests库 添加代理proxies等其他信息

    Requests库 通过Requests 库 提供的方法我们可以在请求页面的时候同时添加更多的信息,在urllib库中同时添加代理和User-agent 我在网上找了一些办法但是没有理解就不在这里说了 ...

  3. python爬虫urllib 数据处理_python爬虫学习笔记(三)-爬取数据之urllib库

    1. 小试牛刀 怎样扒网页呢? 其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS,如果把 ...

  4. python用法查询笔记_Python爬虫学习笔记(三)

    handler处理器自定义 - Cookies && URLError && json简单使用 Cookies: 以抓取https://www.yaozh.com/为例 ...

  5. python爬虫学习笔记(三)——淘宝商品比价实战(爬取成功)

    2020年最新淘宝商品比价定向爬取 功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格. 理解:淘宝的搜索接口 翻页的处理 技术路线:requests­          re 程序的结 ...

  6. python爬虫登录网站_python爬虫学习,使用requests库来实现模拟登录4399小游戏网站。...

    1.首先分析请求,打开4399网站. image 右键检查元素或者F12打开开发者工具.然后找到network选项, image 这里最好勾选perserve log 选项,用来保存请求日志.这时我们 ...

  7. Python 网络爬虫笔记1 -- Requests库

    Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...

  8. Python 网络爬虫笔记2 -- Requests库实战

    Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...

  9. Python3 爬虫学习笔记 C07 【解析库 lxml】

    Python3 爬虫学习笔记第七章 -- [解析库 lxml] 文章目录 [7.1]关于 lxml [7.2]使用 XPath [7.3]查找所有节点 [7.4]查找子节点 [7.5]查找父节点 [7 ...

  10. Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】

    Python3 爬虫学习笔记第一章 -- [基本库 urllib 的使用] 文章目录 [1.1] urllib 简介 [1.2] urllib.request 发送请求 [1.2.1] urllib. ...

最新文章

  1. Linux中基于snmp协议的mrtg安装及使用
  2. 5下载的demo在哪_归类专业能力水平评价练习盘!快来下载呀
  3. mysql qps如何查看_mysql状态查看 QPS/TPS/缓存命中率查看
  4. VUE:兄弟组件间传参
  5. 通过Postfix构建Exchange Server 2010邮件网关部署系列一:创建新域环境
  6. leetcode —— 面试题36. 二叉搜索树与双向链表
  7. 用easyx画五角星_【洛谷日报#195】有个东西叫EasyX
  8. OpenShift 4 - 通过设置SDN的NetworkPolicy定义Pod访问策略
  9. 面对Mission Impossible,你会怎么做?
  10. python写ini文件不能保持原有顺序问题_python 生成 xml文件 属性的顺序问题
  11. 2019ASC世界大学生超算竞赛预赛结果出炉:20校晋级,北航第一
  12. Struts2 工作流程
  13. 公司网络上网慢排查项
  14. Sql Server 02
  15. 2022年,全网最真实的软件测试面试题
  16. 2020/03/01 03-Django模板DTL使用
  17. Pega How To系列之一:如何在页面上动态显示/隐藏内容 ----CheneyWang
  18. 使用python scrapy爬取全国小区信息(包括小区价格,经纬度,面积,户数等),并保存到mysql和excel
  19. 带联网功能的RFID宿舍门禁(四)-NodeMCU网站与RC522共同控制舵机转动
  20. 1. mysql安装

热门文章

  1. 网页拼图游戏html代码,网页设计(一):拼图游戏
  2. python生成dat文件_Ra-使用Python脚本生成shape.dat文件
  3. 您有新的订单提示音_《胡闹厨房:全都好吃》PS5新手柄专属功能细节揭露
  4. 99. Leetcode 322. 零钱兑换 (动态规划-完全背包)
  5. 57. Leetcode 257. 二叉树的所有路径 (二叉树-二叉树路径和)
  6. FCN全连接卷积网络(5)--Fully Convolutional Networks for Semantic Segmentation阅读(相关工作部分)
  7. NTU 课程笔记: PNP
  8. pytorch笔记:torch.nn.functional.pad
  9. Linux疑难杂症解决方案100篇(二十)-万字长文带你读懂正则表达式(建议收藏)
  10. 【毕业求职季】-听说你想去大厂看学妹,带你看看腾讯微信产品岗面经(已offer)