python3:requests模块-写了一点

Posted 法外狂徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3:requests模块-写了一点相关的知识,希望对你有一定的参考价值。

使用requests,它的七个主要方法,在这里只讲两个:get、post

>>> import requests

>>> r=requests.get("http://www.baidu.com")

>>> r.status_code 200

>>> r.encoding ‘ISO-8859-1‘

>>> r.apparent_encoding ‘utf-8‘

>>> r.text  # 发现编码不行,改编码

>>> r.encoding=‘utf-8‘

  注意requests库有时会产生异常,比如网络连接错误、http错误异常、重定向异常、请求url超时异常等等。所以我们需要判断r.status_codes是否是200。

我们可以利用r.raise_for_status()语句去捕捉异常,该语句在方法内部判断r.status_code是否等于200,如果不等于,则抛出异常。

一个爬取网页的通用代码框架:

try:

  r=requests.get(url,timeout=30)#请求超时时间为30秒

  r.raise_for_status()#如果状态不是200,则引发异常

  r.encoding=r.apparent_encoding #配置编码

  return r.text

except:

  return"产生异常"

params = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}         

r = requests.post(‘http://192.168.165.4:8000/show/testreport/‘,data=params)        

在服务器端用request.POST.get("data")什么也获取不到,用request.body获取到的是b‘k2=v2&k1=v1‘

但这样的格式怎么也转不成字典,        

r = requests.post(‘http://192.168.165.4:8000/show/testreport/‘,json=params)        

用request.body获取到b‘{"k2": "v2", "k1": "v1"}‘,其实我想说的是:

在客户端产生了一个字典,由于需要加密,所以成了这样的数据:b‘qwrasdfsdfsfa‘,怎么发呢?

直接发就行:

a = b‘qwrasdfsdfsfa‘

r = requests.post(‘http://192.168.165.4:8000/show/testreport/‘,data=a)

然后在服务器端用request.body()获取数据然后解密就行。

以上是关于python3:requests模块-写了一点的主要内容,如果未能解决你的问题,请参考以下文章

python3 requests模块

python3 requests详解

Python3 requests模块实现模仿浏览器+代理访问

python3+requests库框架设计08-发送邮件

基于Python3+Requests的贴吧签到助手

昨晚停网后,我写了一段Python代码攻破了隔壁老王家的wifi密码