一.简单使用和讲解

import aiohttp
import asyncio async def fetch(client):
async with client.get('http://httpbin.org/get') as resp:
assert resp.status == 200
return await resp.text() async def main():
async with aiohttp.ClientSession() as client:
html = await fetch(client)
print(html) loop = asyncio.get_event_loop() #返回一个事件循环对象,是asyncio.Baseeventloop的实例 for i in range(30):
task = loop.create_task(main()) #添加任务 loop.run_until_complete(main()) #运行直至main()运行完

二.asyncio模块(事件相关)

Column Column
Asyncio.get_event_loop() 返回一个事件循环对象,是asyncio.Baseeventloop的实例
Abstracteventloop.stop() 停止运行事件循环
Abstracteventloop.run_forever() 一直运行直到stop()
Abstracteventloop.run_until_complete(func()) 运行直至func对象运行完
Abstracteventloop.close() 关闭事件循环
Abstracteventloop.is_running() 返回事件循环的是否运行
Abstracteventloop.create_task(func()) 添加事件

三.asyncio模块回调(部分代码)

loop = asyncio.get_event_loop()     #返回一个事件循环对象,是asyncio.Baseeventloop的实例
task = loop.create_task(main())
task.add_done_callback(callback) #上面的mian方法的返回值为下面callback方法名所用方法的入参

四.aiohttp请求相关

1.发起请求

import aiohttp
import asyncio async def request_get(url):
async with aiohttp.ClientSession() as client: # 创建
async with client.get(url) as resp:
assert resp.status == 200 # 如果状态码是200才往下走,不然抛异常
print( await resp.text()) loop = asyncio.get_event_loop()
loop.run_until_complete(request_get("http://httpbin.org/get"))

2.添加请求头,params,cookies,代理

和reuqest模块类似直接加就可以了
#设置代理
session.get("http://python.org",proxy="http://some.proxy.com")

3.自定义域名解析地址

#我们可以指定域名服务器的 IP 对我们提供的get或post的url进行解析
from aiohttp.resolver import AsyncResolver resolver = AsyncResolver(nameservers=["8.8.8.8", "8.8.4.4"])
conn = aiohttp.TCPConnector(resolver=resolver)

4.控制同时连接的数量(连接池)

async def func1():
cookies = {'my_cookie': "my_value"}
conn = aiohttp.TCPConnector(limit=2)  #默认100,0表示无限
async with aiohttp.ClientSession(cookies=cookies,connector=conn) as session:
pass

五.aiohttp响应相关

1.获取网站的响应状态码

resp.status

2.获取网站的请求头

resp.headers 来查看响应头,得到的值类型是一个dict
resp.raw_headers  查看原生的响应头,字节类型
resp.history  查看重定向的响应头

3.获取网站的响应内容

使用text()方法
使用json()方法 json格式
使用read()方法,不进行编码,为字节形式
r.content.read(10) 获取二进制流前10
注意:text(),read()方法是把整个响应体读入内存,如果你是获取大量的数据,请考虑使用”字节流“(StreamResponse)

python3异步爬虫 ——aiohttp模板使用的更多相关文章

  1. python 基于aiohttp的异步爬虫实战

    钢铁知识库,一个学习python爬虫.数据分析的知识库.人生苦短,快用python. 之前我们使用requests库爬取某个站点的时候,每发出一个请求,程序必须等待网站返回响应才能接着运行,而在整个爬 ...

  2. 利用aiohttp制作异步爬虫

      asyncio可以实现单线程并发IO操作,是Python中常用的异步处理模块.关于asyncio模块的介绍,笔者会在后续的文章中加以介绍,本文将会讲述一个基于asyncio实现的HTTP框架--a ...

  3. Python3 网络爬虫(请求库的安装)

    Python3 网络爬虫(请求库的安装) 爬虫可以简单分为几步:抓取页面,分析页面和存储数据 在页面爬取的过程中我们需要模拟浏览器向服务器发送请求,所以需要用到一些python库来实现HTTP的请求操 ...

  4. 深入理解协程(四):async/await异步爬虫实战

    本文目录: 同步方式爬取博客标题 async/await异步爬取博客标题 本片为深入理解协程系列文章的补充. 你将会在从本文中了解到:async/await如何运用的实际的爬虫中. 案例 从CSDN上 ...

  5. Python实现基于协程的异步爬虫

    一.课程介绍 1. 课程来源 本课程核心部分来自<500 lines or less>项目,作者是来自 MongoDB 的工程师 A. Jesse Jiryu Davis 与 Python ...

  6. Python3网络爬虫开发实战PDF高清完整版免费下载|百度云盘

    百度云盘:Python3网络爬虫开发实战高清完整版免费下载 提取码:d03u 内容简介 本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib.req ...

  7. 自定义异步爬虫架构 - AsyncSpider

    作者:张亚飞 山西医科大学在读研究生 1. 并发编程 Python中实现并发编程的三种方案:多线程.多进程和异步I/O.并发编程的好处在于可以提升程序的执行效率以及改善用户体验:坏处在于并发的程序不容 ...

  8. python异步爬虫

    本文主要包括以下内容 线程池实现并发爬虫 回调方法实现异步爬虫 协程技术的介绍 一个基于协程的异步编程模型 协程实现异步爬虫 线程池.回调.协程 我们希望通过并发执行来加快爬虫抓取页面的速度.一般的实 ...

  9. [python]新手写爬虫v2.5(使用代理的异步爬虫)

    开始 开篇:爬代理ip v2.0(未完待续),实现了获取代理ips,并把这些代理持久化(存在本地).同时使用的是tornado的HTTPClient的库爬取内容. 中篇:开篇主要是获取代理ip:中篇打 ...

随机推荐

  1. 缓动公式整理(附:C#实现及WPF原版对比)

    前言 缓动在动画效果中应用非常广泛,在合适的时候使用一些缓动效果会使得效果更加符合人的直观感受,简单来说,会显得更加自然. WPF提供了11种缓动效果,涵盖了大部分的使用场景.不过如果需要在非WPF下 ...

  2. 【Unity 插件】Lean Pool 使用

    2020-09-11 Lean Pool 是一个轻量级的游戏对象池库,它可以轻松的帮助你的游戏提高性能.当然,Lean Pool也可以工作于普通的C#类. 目录: 1.Lean Pool使用 2.Le ...

  3. 10月1日之后,你新建的GitHub库默认分支不叫「master」了

    从 2020 年 10 月 1 日开始,GitHub 上的所有新库都将用中性词「main」命名,取代原来的「master」,因为后者是一个容易让人联想到奴隶制的术语. 这个决定并不是最近才做出的.今年 ...

  4. Spring学习(八)AOP详解

    文章更新时间:2020/04/06 一.一个例子 在上面的例子中,包租婆的核心业务就是签合同,收房租,那么这就够了,灰色框起来的部分都是重复且边缘的事,交给中介商就好了,这就是 AOP 的一个思想:让 ...

  5. win10彻底卸载和删除MySql

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41140741/article/de ...

  6. Tomcat 第四篇:请求处理流程(上)

    1. 引言 既然是在讲 Tomcat ,那么一个 HTTP 请求的请求流程是无论如何也绕不开的. 首先抛开所有,使用我们现有的知识面,猜测一下一个请求被 Tomcat 处理的过程: 1. 客户端(浏览 ...

  7. burp suite 之 Repeater(中继器)

    Repeater:对HTTP请求的修改,通常用于上传攻击 通过抓包后将请求包通过选项卡发送到 Repeater下 右下角 显示 页面大小为18809字节 可以自定义添加主机 大小写敏感 正则表达式 文 ...

  8. iOS14剪切板探究,淘宝实现方法分析

    随着iOS 14的发布,剪切板的滥用也被大家所知晓.只要是APP读取剪切板内容,系统都会在顶部弹出提醒,而且这个提醒不能够关闭.这样,大家在使用APP的过程中就能够看到哪些APP使用了剪切板. 正好我 ...

  9. RestTemplate get请求多参数 简单封装

    使用RestTemplate发送get请求时,如果有多个参数拼接起来会比较麻烦,在此做个简单的封装 public static void main(String[] args) { Map<St ...

  10. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...