`
sillycat
  • 浏览: 2542396 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Python Library 2019(1)requests and aiohttp

 
阅读更多
Python Library 2019(1)requests and aiohttp

Try AIOHttp
> mkdir aiohttp
> cd aiohttp/

Check Version
> python -V
Python 3.7.5

> pip -V
pip 19.3.1 from /Users/hluo/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pip (python 3.7)

> pip install aiohttp
> pip install cchardet
> pip install aiodns

Write a simple HTTP Server
> cat web.py
import asyncio
from aiohttp import web
routes = web.RouteTableDef()
@routes.get('/')
async def index(request):
    await asyncio.sleep(2)
    return web.json_response({
        'name': 'index'
    })
@routes.get('/about')
async def about(request):
    await asyncio.sleep(0.5)
    return web.Response(text="<h1>about us</h1>")
def init():
    app = web.Application()
    app.add_routes(routes)
    web.run_app(app)
init()

Start the server, but it complains in 3.7.x python version
> python web.py

Downgrade the python version to 3.6.x
> pyenv local 3.6.8
> python -V
Python 3.6.8

Start the server again
> python web.py

Then we can visit these URLs
http://localhost:8080/about
http://localhost:8080/

Check library requests
> pip install requests

Get Sample
>>> import requests
>>> playload={'page':'1','per_page':'10'}
>>> r = requests.get("http://httpbin.org/get", params=playload)
>>> print(r.url)
http://httpbin.org/get?page=1&per_page=10

Post the JSON information
>>> import json
>>> import requests
>>> playload={'page':1, 'per_page':10}
>>> r = requests.post("http://httpbin.org/post", data=json.dumps(playload))
>>> print(r.text)
{
  "args": {},
  "data": "{\"page\": 1, \"per_page\": 10}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Content-Length": "27",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.22.0"
  },
  "json": {
    "page": 1,
    "per_page": 10
  },
  "origin": "207.114.244.5, 207.114.244.5",
  "url": "https://httpbin.org/post"
}

Alternative way to do the JSON
>>> import requests
>>> playload = { 'page':1, 'per_page':10}
>>> r = requests.post("http://httpbin.org/post", json=playload)
>>> print(r.text)

Add to the Headers
>>> import requests
>>> url = 'http://httpbin.org/post'
>>> payload = { 'page': 1, 'per_page': 10 }
>>> headers = { 'User-Agent': 'Python Script' }
>>> r = requests.post(url, json=payload, headers=headers)
>>> print(r.request.headers)
{'User-Agent': 'Python Script', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '27', 'Content-Type': 'application/json'}
>>> print(r.headers)
{'Access-Control-Allow-Credentials': 'true', 'Access-Control-Allow-Origin': '*', 'Content-Encoding': 'gzip', 'Content-Type': 'application/json', 'Date': 'Mon, 16 Dec 2019 20:04:28 GMT', 'Referrer-Policy': 'no-referrer-when-downgrade', 'Server': 'nginx', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'DENY', 'X-XSS-Protection': '1; mode=block', 'Content-Length': '264', 'Connection': 'keep-alive'}

Working on Response
>>> import requests
>>> r = requests.get("http://httpbin.org/get")
>>> print(r.status_code)
200

Get JSON response
>>> import requests
>>> r = requests.get("https://github.com/timeline.json")
>>> print(r.json())
{'message': 'Hello there, wayfaring stranger. If you’re reading this then you probably didn’t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.', 'documentation_url': 'https://developer.github.com/v3/activity/events/#list-public-events'}

Session to Keep the Cookie
>>> import requests
>>> s = requests.Session()
>>> s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
<Response [200]>
>>> r = s.get("http://httpbin.org/cookies")
>>> print(r.text)
{
  "cookies": {
    "sessioncookie": "123456789"
  }
}

Session help send Default Parameters
>>> import requests
>>> s = requests.Session()
>>> s.auth = ('user','password')
>>> s.headers.update({'api-key':'adsfsadfsdf'})
>>> r = s.get('http://httpbin.org/headers', headers={'User-Agent':'python script'})
>>> print(r.request.headers)
{'User-Agent': 'python script', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'api-key': 'adsfsadfsdf', 'Authorization': 'Basic dXNlcjpwYXNzd29yZA=='}

References:
https://www.jianshu.com/p/acb6a1b95fcb
https://aiohttp.readthedocs.io/en/stable/


分享到:
评论

相关推荐

    Python requests及aiohttp速度对比代码实例

    `requests` 是一个同步库,适合执行单线程请求,而 `aiohttp` 是一个异步库,基于Python的异步I/O模型(通常称为asyncio),在处理大量并发请求时性能更优。 首先,让我们深入理解这两个库的工作原理: 1. **...

    python-requests离线包

    1. `python-3.7.4-amd64.exe`: 这是Python 3.7.4的安装程序,适用于AMD64架构的计算机。Python是requests库的基础,必须先安装Python环境才能使用requests。 2. `certifi-2019.9.11-py2.py3-none-any.whl`: certifi...

    python3的 requests离线安装包(包括依赖)

    python3的 requests离线安装包,仅window环境能用,离线安装方法如下: 解压到任意目录后,cd到requests目录 然后 pip install --no-index --find-links=pack -r requirements.txt 或者 python -m pip install --no-...

    Python-为Python的requests添加asyncawait语法支持

    1. 首先,确保已经安装了`aiohttp`库。如果尚未安装,可以使用`pip install aiohttp`命令进行安装。 2. 导入`aiohttp`库中的`ClientSession`和`asyncio`库的`asyncio.run`(对于Python 3.7以下版本,应使用`asyncio....

    python requests模块及依赖包.zip

    Python的`requests`模块是用于发送HTTP请求的强大库,它简化了与Web服务的交互,使得开发者能够方便地获取网页内容、提交表单、下载文件等。本压缩包包含`requests`模块本身及其依赖包,如`certifi`、`chardet`等,...

    Python.Requests.Essentials.1784395412

    the Python Requests library is one of the world's best clients, with the highest number of downloads. It allows hassle-free interactions with web applications using simple procedures. You will be ...

    构建高效的python requests长连接池详解

    在Python的网络编程中,`requests`库是一个广泛使用的HTTP客户端库,因其简洁易用而深受开发者喜爱。本文将深入探讨如何构建高效的`requests`长连接池,这对于处理大量HTTP请求,尤其是涉及到频繁的API调用或者CDN...

    Python库 | requests_pkcs12-1.6-py2.py3-none-any.whl

    《Python库requests_pkcs12详解》 在Python的开发世界中,有一个强大的库叫做`requests`,它使得网络请求变得简单易用。然而,在处理需要使用PKCS#12证书的安全HTTPS通信时,`requests`原生并不支持。为了解决这个...

    python实现接口自动化(python+unittest+requests+ddt数据驱动框架)

    python实现接口自动化测试: 1、测试框架:python+unittest+requests+ddt数据驱动 2、测试用例维护在excle 3、支持post方法、get方法等 4、支持测试报告结果发送至qq邮箱

    Python使用grequests(gevent+requests)并发发送请求过程解析

    1. Python中的requests库:Python开发人员通常使用requests库来发送HTTP请求。requests库提供了一种简单易用的方法来处理HTTP/1.1协议,使用起来直观且方便。然而,requests的默认行为是串行发送请求,这意味着一次...

    Python+Requests+PyTest+Excel+Allure+sendMail

    1. **Requests库**:这是Python中最常用的HTTP客户端库,用于发送HTTP请求。它可以方便地实现GET、POST、PUT、DELETE等各种HTTP方法,处理cookies、文件上传、HTTP认证等功能。在接口测试中,Requests库是与服务器...

    python 自动化接口 requests模块

    1. 使用`pip`(Python包管理器):在命令行中输入以下命令: ``` pip install requests ``` 这样就能自动下载并安装`requests`库及其依赖。 2. 如果你有`requests`的源代码,如压缩包中的`requests-master`,你...

    python requests官方中文文档( 高级用法 Requests 2.18.1 文档 )

    python requests官方中文文档,进阶用法。本文档覆盖了requests库的一些高级特性

    Python-一个主要使用python3celery和requests来爬取职位数据的爬虫

    本系统是一个主要使用python3, celery和requests来爬取职位数据的爬虫,实现了定时任务,出错重试,日志记录,自动更改Cookies等的功能,并使用ECharts Bootstrap 来构建前端页面,来展示爬取到的数据。

    基于Python+Flask、requests的抖音去水印工具-毕业设计源码+使用文档(高分优秀项目)

    基于Python+Flask、requests的抖音去水印工具-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,...

    「Python系列」Python requests模块.md

    「Python系列」Python requests模块

    Python3+unittest+requests+excel实现接口自动化测试框架源码

    本项目利用Python3作为主要编程语言,结合unittest测试框架,requests库处理HTTP请求,以及Excel作为数据驱动,构建了一个接口自动化测试框架。下面将详细解析这个框架的核心组成部分及实现原理。 **unittest测试...

    python+requests+pytest 接口自动化框架(8)

    python+requests+pytest+allure+yaml 一、数据类型处理 “${read_extract_data(tag_id)}” 替换成 110 二、DDT数据驱动封装 数据驱动可以利用 excel,csv,yaml 用excel,csv的缺点 1.数据类型难处理 2.调用函数不是...

Global site tag (gtag.js) - Google Analytics