外链论坛

 找回密码
 立即注册
搜索
查看: 53|回复: 1

python3—requests讲解

[复制链接]

2596

主题

522

回帖

9920万

积分

论坛元老

Rank: 8Rank: 8

积分
99200746
发表于 2024-8-18 05:56:20 | 显示全部楼层 |阅读模式

requests库是一个常用的用于http请求的模块,它运用python语言编写,能够方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。

1、requests模块的安装

WIN+R——cmd——pip install requests就可

倘若遇到read timeout(拜访超时)的问题,可参考链接文案you-get介绍及python怎样利用you-get工具进行网页视频的爬取?中you-get工具借用豆瓣代理的下载安装方式。

2、requests模块的运用办法

2.1 requests库的几个重点办法

(1)requests.get()

这个办法咱们平时最常用的办法之一,经过这个办法咱们能够认识到其他的办法因此咱们仔细介绍这个办法详细参数是:

r=requests.get(url,params,**kwargs)url: 必须爬取的网站位置。params: 翻译过来便是参数, url中的额外参数,字典字节流格式,可选。**kwargs : 12个掌控拜访的参数

params:字典或字节序列, 做为参数增多到url中,运用这个参数能够有些键值对以?key1=value1&key2=value2的模式增多到url中 例如:kw= {key1: values, key2: values} r = requests.get(http:www.python123.io/ws, params=kw)

a.发送无参数的get请求:

b.发送带参数的get请求:

以上得知,咱们的get参数是以params关键字参数传递的。

另外能够传递一个list给一个请求参数:

以上便是get请求的基本形式。

**kwargs有以下的参数:

data:字典,字节序或文件对象,重点做为向服务器供给或提交资源是提交,,做为requests的内容,与params区别的是,data提交的数据并不放在url链接里, 而是放在url链接对应位置的地区做为数据来存储。它能够接受一个字符串对象。json:json格式的数据, json合适在关联的html,http关联的web研发中非常平常是http最经常运用的数据格式, 他是做为内容部分能够向服务器提交。 例如:kv = {key1: value1} r = requests.post(http://python123.io/ws, json=kv)headers:字典是http的关联语,对应了向某个url拜访时所发起的http的头i字段, 能够用这个字段来定义http的拜访的http头,能够用来模拟任何咱们想模拟的浏览器来对url发起拜访。 例子: hd = {user-agent: Chrome/10} r = requests.post(http://python123.io/ws, headers=hd)cookies:字典或CookieJar,指的是从http中解析cookieauth:元组,用来支持http认证功能files:字典, 是用来向服务器传输文件时运用的字段。 例子:fs = {files: open(data.txt, rb)} r = requests.post(http://python123.io/ws, files=fs)timeout: 用于设定超时时间, 单位为秒,当发起一个get请求时能够设置一个timeout时间, 倘若在timeout时间内请求内容返回, 将产生一个timeout的反常。proxies:字典, 用来设置拜访代理服务器。allow_redirects: 开关, 暗示是不是准许对url进行重定向, 默认为True。stream: 开关, 指是不是对获取内容进行立即下载, 默认为True。verify:开关, 用于认证SSL证书, 默认为True。cert: 用于设置保留本地SSL证书路径

其中response(即:r)对象有以下属性:

咱们能够单击桌面左下角的WIN按钮,找到python安装包,打开IDLE来亲自操作熟练response的属性。

requests库的反常

重视requests库有时会产生反常例如网络连接错误、http错误反常、重定向反常、请求url超时反常等等。因此咱们必须判断r.status_codes是不是是200,在这儿咱们怎么样去捉捕异常呢?

这儿咱们能够利用r.raise_for_status() 语句去捉捕反常,该语句在办法内部判断r.status_code是不是等于200,倘若不等于,则抛出反常

于是在这儿咱们有一个爬取网页的通用代码框架:

此处不可采用return来返回输出,运用的话会报错,由于return只能用在自定义函数中

(2) request.head()

看代码:

(3)requests.post()

1、向url post一个字典:

2、向url post 一个字符串,自动编码为data

>>> import requests >>> r=requests.post("http://httpbin.org/post",data="hello python") >>> print(r.text) { "args": {}, "data": "hello python", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "12", "Host": "httpbin.org", "User-Agent": "python-requests/2.22.0", "X-Amzn-Trace-Id": "Root=1-5e510c68-12ee4eec533847d89a06d184" }, "json": null, "origin": "36.47.128.206", "url": "http://httpbin.org/post" }

3.向url post一个文件

>>> import requests >>> files = {filespen(C:\\Users\\Think\\Desktop\\test_requests\\test.txt,rb)} >>> r = requests.post(https://httpbin.org/post,files=files) >>> print(r.text) { "args":{ }, "data":"", "files":{ "files":"hello worle!" }, "form":{ }, "headers":{ "Accept":"*/*", "Accept-Encoding":"gzip, deflate", "Connection":"close", "Content-Length":"158", "Content-Type":"multipart/form-data; boundary=d2fb307f28aeb57b932d867f80f2f600", "Host":"httpbin.org", "User-Agent":"python-requests/2.19.1" }, "json":null, "origin":"113.65.2.187", "url":"https://httpbin.org/post"

以上得知,post请求参数是以data关键字参数来传递的。

(5)requests.put()

看代码:

>>> payload={"key1":"value1","key2":"value2"} >>> r=requests.put("http://httpbin.org/put",data=payload) >>> print(r.text) { "args": {}, "data": "", "files": {}, "form": { "key1": "value1", "key2": "value2" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Content-Length": "23", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.4" }, "json": null, "origin": "218.197.153.150", "url": "http://httpbin.org/put"

(6)requests.patch()

requests.patch和request.put类似。 两者区别的是: 当咱们用patch时仅必须提交必须修改的字段。 而用put时,必要将20个字段一块提交到url,未提交字段将会被删除。 patch的好处是:节省网络带宽。

(7)requests.request()

requests.request()支持其他所有的办法。 requests.request(method,url,**kwargs)

method: “GET”、”HEAD”、”POST”、”PUT”、”PATCH”等等url: 请求的网址**kwargs: 掌控拜访的参数
回复

使用道具 举报

0

主题

2万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-29 21:40:48 | 显示全部楼层
说得好啊!我在外链论坛打滚这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-9-17 06:51 , Processed in 0.081003 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.