Python aiohttp异步爬虫(萌新读物,大神勿扰)

aiohttp异步爬虫难吗?

当然!首先你找教程就是个问题!面向萌新的更是少的可怜,零零散散,大部分教程都是中级以上的程度!问题是…………入门篇呢?怎么入门

还好!这篇文章就是专门解决这个问题的!((≧∇≦)/)

图片发自简书App

准备工作:

Python版本3.5及以上!有安装  aiohttp      asyncio      BeautifulSoup      等库!

这些是准备工作!没有工具怎么撸代码对吧

还有至少有Python基础!会requests!才能学习喔⊙ω⊙!

异步使用中要注意的地方:

1.异步很快!所以想要为所欲为!电脑一定要好,否则会出现遗失数据的情况(我的辣鸡老电脑43分钟爬了55000张图片,结果程序跑完了只有最多20000张图能看,其他的数据因为电脑太老了来不及写入结果被冲掉了…………所以,要有承受失去一部分数据的心理准备,或者限速!(高级套,土豪套可以无视此限制!)

2.  aiohttp相当于12缸发动机的跑车!所以链接数量只有百来条的同学!请老老实实用requests吧!百来条链接用aiohttp速度会和requests差不多!原因很简单,数量少压根跑不起来!这是大杀器,拿来杀鸡不理想!


3.  记住上面两点!完毕…………!

(怕你们吃亏,提前说出来!)

图片发自简书App


教程正式开始:

1.天才第一步,导入Python库!

图片发自简书App

time是时间模块用来计时的不是本篇必要的库!

aiohttp  我们异步爬虫的主角,还有它老爸——  asyncio  !

我们的解析库BeautifulSoup  爬虫必备! 

注意! 

建议你安装使用  lxml  来解析,而不是BeautifulSoup  自带的  html.parser  !

如果说aiohttp是请求库中的12V跑车,那么lxml就是解析的12V跑车,两强联手,所向披靡!

2.构建要爬取的链接:

这个应该是基础了,各有各的方法和方式就不多解释了!

图片发自简书App

3.异步第一步 async  def

async=标记为协程,协程就是异步的关键!def 大家都很熟悉了,定义的意思,不做详细解释了!

连在一起 

就是以协程的形式定义一个函数  或者  说文化点就是  定义一个协程形式的函数  简化点  定义协程函数!三种骚话版本应该能看懂了吧!get()是我定义的函数名!这个按自己喜好来!记得加上  async  def  就好,

headers是请求头,基础知识不做详解!

图片发自简书App

4.异步第二步 session

图片发自简书App


这一步和 async def 差不多是固定套路,我们的异步请求全是靠aiohttp里面的ClientSession 来执行的,因为是个关键的东西,所以是固定化的!

async with aiohttp.ClientSession() as session:

as 后面的名字可以改动,前半身是固定的,记下来就好!了解了解有什么用就OK了,库的开发者已经帮助我们铺垫好了,按套路走就好!

注意:

async with aiohttp.ClientSession() as session:

这一句

只需要写一次!

只需要写一次!

只需要写一次!

重要的逼,装三遍!

5.发送请求

图片发自简书App


async with session.get(url,headers = headers) as resp:

这一句就是请求部分了,session是我定义的名字,你们换成自己的!url是链接,headers是请求头,除了get外,其他的和requests差不多也能 post 等同于requests.get(url,headers=headers)

仅仅是把requests.get请求置换成了async with session.get()了而已,然后依次解析!写法和requests差不多吧!

图片发自简书App

我放图你们自己琢磨!我过一下重要部分就好!

图片发自简书App


注意,之所以上下错开是我调了编译器的设置,不然代码截图不完全,你们还是按Python正常的写法,缩进书写!

6.重点部分来了!

图片发自简书App

第一句和最后一句跳过,是统计程序运行时间的代码!可有可无!

loop = asyncio.get_event_loop()

又一句固定化代码!照抄就好,作用是开启循环模式,因为异步就是信息循环的过程,这一句相当于给汽车打火!

tasks =[get(i)for i in a]

还记得a列表吗?就是我们拼接或者循环得到的所有主要链接!通过迭代的方式赋值给我定义的协程函数get(),注意,[  ]  这个无论如何都是要的,没他没法跑起来,估计是内部有函数需要用[  ]判断链接是否发送过吧!和a列表原理应该差不多,不过它是内置在里面的而已!注意一下就好!

loop.run_until_complete(asyncio.wait(tasks))

这一句,差不多也算固定化代码,里面的tasks变量名可以改成你自己的,这一句的作用就是启动循环跑起来的意思,相当于踩汽车油门,愉快开跑的意思!

我们来梳理一下!

1.构建链接

2.定义一个协程函数体(此时的async仅仅起到了标明只是一个协程定义函数的作用,后面的才是发挥作用的代码,形象的比喻,就是,只是一个协程的文件夹,代码在里面!)

3.async with aiohttp.ClientSession() as session:

以协程的形式使用请求功能的主要函数,没他不能get请求,固定套路,缺一不可!

4.async with session.get(url,headers = headers) as resp:

get请求的方式,用于异步请求,出自aiohttp.ClientSession()

(跳过部分:这一段是请求和解析的部分,因人而异,所以跳过,会requests和BeautifulSoup都懂!)

5.loop = asyncio.get_event_loop()

开启消息循环,固定套路,缺一不可!

6.tasks =[get(i)for i in a]

这个迭代真的不用讲吧!基础知识!

7.loop.run_until_complete(asyncio.wait(tasks))

这一句,启动所有代码!

汽车人!出发!

异步爬虫讲解完毕!其他的解析js啊!反爬虫啊!什么的就自己去掌握了,知识是说不完的!下面是不错的教程用于参考!

aiohttp还能用于异步服务器端喔!这些百度的到!反正是个很强大的库!


1.异步起源知识

2.异步简易使用

3.异步讲解

4.异步使用2

5.不错的异步文章

6.有参考价值的异步爬虫代码

是不是灰常简单!除了代码变动了一下其他简直和requests一模一样的写法有木有!就这样就能轻松实现异步操作!这一点非常的Python!一句话————牛逼!墙都不服,就服你!

图片发自简书App




简书处女作——完成!


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容