python requests库学习

Posted

tags:

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

1.先bia一个国内镜像吧

  用法很简单 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

2.大二的时候受到小甲鱼的蛊惑,拿urllib爬美女写真图。。。。。。真的是超级麻烦(其实也没多麻烦)

3.前段时间听说有个很好用的包‘requests’,最近开学学计算机网络和互联网程序设计,于是就想起了这个,准备探索一下

 


 先大概看了一下,真的很方便,因为之前老遇到转码的问题。。。一窍不通。反正就是bytes()、decode()、encode(),之间互相试。。。。。。

而这个真的就很简单了,拿到response以后直接.text就得到str了

 1 # -*- coding: utf-8 -*-
 2 import json
 3 import requests
 4 
 5 URL = https://api.github.com
 6 
 7 def build_url(endpoint):
 8     return /.join([URL, endpoint])
 9 
10 def better_print(json_str):
11     return  json.dumps(json.loads(json_str), indent=4)
12 
13 def request_method():
14     response = requests.get(build_url(users/liwenchi123000))
15     print(better_print(response.text))
16 
17 if __name__ == __main__:
18     request_method()

这个就是用requests.get()方法,利用github的一个查看用户的api来得到一些用户信息,当时是保密的。

带参数的请求,这个我自己还没有试,先看文档写下来吧

普通的请求

response = requests.get(URL, params={param1:‘value1,param2:‘value2})

表单参数提交

Content-Type: application/x-www-form-urlencoded
response = requests.post(URL, data={param1:value1, param2:value2})

json参数提交(github就是用的这种)

 

Content-Type: application/json
response = requests.post(URL, json={param1: value1, param2: value2})

还有异常检测

例如下面这个超时检测

 1 from requests import exceptions
 2 
 3 def timeout_request():
 4     try:
 5         response = requests.get(https://www.baidu.com/, timeout=0.05)
 6     except exceptions.Timeout as e:
 7         print(e)
 8     else:
 9         print(response.text)
10 
11 if __name__ == __main__:
12     timeout_request()

0.05秒还是有点快的,显示的结果是

HTTPSConnectionPool(host=www.baidu.com, port=443): Read timed out. (read timeout=0.05)

如何自定义一个request

 1 def hard_request():
 2     from requests import Request, Session
 3     s = Session()
 4     headers = {User-Agent:fake1.3.4}
 5     request = Request(GET, build_url(user/emails), auth=(liwenchi123000,******), headers=headers)
 6     prepared = request.prepare()
 7     # 先准备一个request但是不发出去,先看一下它的headers和body
 8     print(prepared.headers)
 9     print(prepared.body)
10     # 现在发送,并设置延迟时间
11     response = s.send(prepared, timeout=5)
12     # 检查返回值
13     print(response.status_code)
14     print(response.request.headers)
15     print(response.text)
16 
17 if __name__ == __main__:
18     hard_request()

常见API

response

status_code 响应码

reason 相应结果

headers 头信息

url 地址

history 经历了什么

elapsed

request

encoding 编码格式

raw

content

text

json

 

以上是关于python requests库学习的主要内容,如果未能解决你的问题,请参考以下文章

Python学习第八篇:requests 库学习

Python学习第八篇:requests 库学习

Python学习第八篇:requests 库学习

你如何在 python 中处理 graphql 查询和片段?

python requests库学习笔记(上)

Python学习request库