一起学爬虫(Python) — 19 年轻人,进来学自动化

今天我又回来啦

  • 聊一聊
    • 首先
    • 一心多用
      • async 后面跟方法

是今天才到的200赞哦!所以今天就开始更新啦,其实有点头疼该写什么了,犹豫是该继续往后教,还是多弄点案例来帮助大家更熟悉爬虫的操作,往后教的话,有些东西可能一下子没法接受,重复的话,又像是水文章……
纠结ing…
如果你有好的意见,就在评论里告诉我吧!

聊一聊

还记得我们学爬虫的初衷吗?
有的人是为了钱,有的人是为了当老司机,还有的人是为了更多的钱,那么我们这几天爬下来的东西,跟钱有什么关系呢?
举个栗子:
我们爬取了很多很多耳机的数据,从中筛选出好评多,购买次数多,利益高的几个耳机,不就可以自己进货自己卖了吗,也可以把数据卖给需要的商家。
再比如说,标题党!想要当标题党也是要有流量支持的鸭,你不知道大家喜欢什么,怎么当标题党??怎么知道大家喜欢什么呢,还记得吗,百度就是一个超级大的大的大的爬虫,想办法从百度那里搞点数据,然后自己再分析一下,就知道大家喜欢什么呗~
为什么说这个时代数据就等于金钱呢,举例子说明哈:
大哥们去找片的时候是不是大多时候都搜索的关键字呢?
一般很少搜索女优的名字了吧。
还有啊,比如说最近很火的马保国,很多b站up主因为做这个视频盈利了不少,那么我们去搜这个视频的时候,是根据up主搜呢,还是根据马保国这个关键字去搜呢?
当然是关键字啦!
所以爬虫,可以帮我们第一时间获取到可能会火起来的“关键字”!
俗话说得好,给你机会你不中用,如果你都知道什么是热度了却不会蹭热度…那可真是太悲哀了~
仔细看b站的鬼畜视频,有些确实做的比较复杂,但也有很多属于简单的,不去试试怎么知道能不能做出来呢,如果第一时间就做出来可能会风靡一时的视频,成为龙头,那不就成了时代的弄潮儿。
问题来了,怎么搜集这些数据?

首先

首先,今天小泽并不打算跟大家说怎么收集数据哈,今天准备跟大家说的是,怎么高效的收集数据!
这时候肯定有人要说了,我们连收集数据都不会,还怎么高效的收集数据???
那我就要问你了,在座的各位虽然很多都是处男,但是影响大家高效的输出吗??
都很快啊。
开个玩笑哈,大家都知道python的代码执行是很死的,一条一条往下执行,所以举个栗子:

import time
def english():print('小明正在学英语...')time.sleep(2)print('小明已经学了两秒英语...')def math():print('小明正在学数学...')time.sleep(2)print('小明已经学了两秒数学...')def zhexue():print('小明正在学哲学...')time.sleep(4)print('小明已经学了四秒哲学...')if __name__ == '__main__':pass

上面小泽定义了三个方法,大家可以理解为一个人要做的事。
现在很多家长都喜欢给孩子报一些辅导班哈,就比如小明今天要先学英语,再学数学,最后再学哲学,但是经常按部就班学完之后天都黑了,想再多学几门都没时间了。
那可咋整啊?
这时候有些魔鬼爸妈就想着,如果我的孩子能cuacuacua同时学这些功课不就好了,传说中的一心多用!

一心多用

这里我们改善一下代码:

import timedef english():print('小明正在学英语...')time.sleep(2)print('小明已经学了两秒英语...')def math():print('小明正在学数学...')time.sleep(2)print('小明已经学了两秒数学...')def zhexue():print('小明正在学哲学...')time.sleep(4)print('小明已经学了四秒哲学...')if __name__ == '__main__':start = time.time()english()math()zhexue()end = time.time()print('小明学完所有课程啦!总用时:'+str(end-start)+'秒!')

上述代码大家应该都能看懂吧,都是基础哦!!
运行结果如下:

可以看到,我们的小明同学竟然用了8秒才学完所有课程!!
我们要教出唐三那样的孩子,就要让他学会一心多用!
有没有什么办法是能同时做到这些事的呢?
答案肯定是有的!!
那就是asyncio模块,记住这个模块哦,还有个更专业的名词,叫做异步。

async是异步的意思,io可以理解为等待的意思,asyncio=async+io
可以理解为等待的时候异步!
什么意思呢,比如说你在接水,但是接水需要10秒钟,你在这10秒钟就原地站着,这叫不异步,怎么做到异步呢?
你一边接水一边手舞足蹈,这叫异步,同样的10秒,你干了两件事,别人只干了一件,这叫优秀。
接着,你一边接水一边手舞足蹈并且把水打翻了,好家伙你直接干了三件事!
接着你可以还要干很多事,把水擦干净,因为有好多水,流了出来,流了一床的那种,没错,我家饮水机是放在床上的。

async是异步的意思,io可以理解为等待的意思,asyncio=async+io
可以理解为等待的时候异步!

async是异步的意思,io可以理解为等待的意思,asyncio=async+io
可以理解为等待的时候异步!

async是异步的意思,io可以理解为等待的意思,asyncio=async+io
可以理解为等待的时候异步!

各位自行下载模块哦,快速下载的方式在之前的博客里也有写到,看到这里了,不点个赞吗??
求求各位小哥哥小姐姐,高抬贵手给个赞吧T-T

既然有了可以让小明一边学习一边学习一边学习的模块,那我们该怎么去用呢?

async 后面跟方法

比如说…

import asyncio
import timeasync def english():print('小明正在学英语...')time.sleep(2)print('小明已经学了两秒英语...')async def math():print('小明正在学数学...')time.sleep(2)print('小明已经学了两秒数学...')async def zhexue():print('小明正在学哲学...')time.sleep(4)print('小明已经学了四秒哲学...')

加了async的方法,就不干净啦!
可以理解为异步方法,就跟岳掌门一样,练了辟邪剑法,已经不能用常人来形容了~
还记得岳掌门是怎么做的吗?
排除所有不利己的因素,最起码你也得是个阴阳人,才能跟我一起对吧。
所以,不要忘了还有io的存在,等待等待,等待时异步,那么什么时候要等待呢?
time.sleep() 是不是就是一个需要等待的命令呢?是的鸭!
还有什么是需要等待的呢?
比如说发起请求,获取响应数据,持久化存储,这些都是要等待的操作,都可以理解为io!
那么既然异步的方法前面要加async,等待的方法前面是不是要加io呢?
错了!东西是要加的,但是不是io,而是await!

awa

看我操作:

import asyncio
import timeasync def english():print('小明正在学英语...')await time.sleep(2)print('小明已经学了两秒英语...')async def math():print('小明正在学数学...')await time.sleep(2)print('小明已经学了两秒数学...')async def zhexue():print('小明正在学哲学...')await time.sleep(4)print('小明已经学了四秒哲学...')

好家伙,一堆awa,await!
这个time.sleep()呢,这期间我们是可以干任何事的哦,嘿嘿嘿。

await后面跟需要等待的事件。
await后面跟需要等待的事件。
await后面跟需要等待的事件。

但是time.sleep()是个妹子,她不想跟await这个阴阳人玩,那该怎么办呢?
阴阳人自己玩自己喽,所以我们就改成阴阳人里面自带的sleep。

import asyncio
import timeasync def english():print('小明正在学英语...')await asyncio.sleep(2)print('小明已经学了两秒英语...')async def math():print('小明正在学数学...')await asyncio.sleep(2)print('小明已经学了两秒数学...')async def zhexue():print('小明正在学哲学...')await asyncio.sleep(4)print('小明已经学了四秒哲学...')

虽然是阴阳人,也是不可以小瞧的啊,不掏出点大宝贝,你都看不起我!

await后面跟支持异步并且需要等待的操作。
await后面跟支持异步并且需要等待的操作。
await后面跟支持异步并且需要等待的操作。

awa

一切准备就绪,我们去执行代码:


if __name__ == '__main__':start = time.time()english()math()zhexue()end = time.time()print('小明学完所有课程啦!总用时:'+str(end-start)+'秒!')


好家伙,0.1秒就学完了,这是学了个p…

那这是为什么呢?我们翻译一下报错的部分:


这是翻译了个啥…
获取对象分配回溯,对象分配…各位都有对象吗?
对象分配回溯,是不是要把大家的对象都收回喽。
获取对象分配回溯,然后全部都给我。
大概意思应该就是,大家的对象统统都给我,意思就是大家都没有对象喽,也就是说大家写的对象都木大木大了,也就是说根本就没有调用对象,所以被小泽都抢走喽~
但是!

如果没有调用对象,那么这些又是什么 ?
大意了呀!
我们忘了,阴阳人有阴阳人的处理方式,如果按照常人的思考方式,你就输了!
那么,阴阳人的开启方式是什么呢:
先分析!
我们是不是有了三个学会了辟邪剑法的方法,就是可以异步的方法,并且里面要等待的命令前面也加了await,
awa
我们原本想的是,直接调用三个方法,然后他们会同时进行,对吧!
但是,然并卵。
那是为什么呢…
突然想起来,很多模块使用的时候,基本都要初始化一下的对吧,而我们用这个asyncio模块的时候,只用了async和io两个功能而已,功能!
也就是说,没有让asyncio这个模块有它自己的地盘,岳掌门再厉害,跑到别人门派里也不能一打几百几千呀,所以,我们要给阴阳人建一个自己的地盘:

# 建立一个阴阳人地盘
loop = asyncio.get_event_loop()

这样我们地盘就有了,接着问一下大家有没有玩过网页游戏,有没有遇到过某些游戏里面有很多悬赏任务,完成了一条就会消失一条,如果一直不完成就会一直在那里,直到有人完成它。
同样,我们的异步也要用这个思路去实现,建立一个任务库,存放我们的任务。

# 建立任务库
renwu = [english(),math(),zhexue()]

然后问题来了,这个库放在哪里?
阴阳人的地盘,阴阳人说了算:

# 提交任务库
loop.run_until_complete(asyncio.wait(renwu))

不要问我为什么要这样,规则,是他们定的,我只是一个打杂的。
来看一下整体的代码:

import asyncio
import timeasync def english():print('小明正在学英语...')await asyncio.sleep(2)print('小明已经学了两秒英语...')async def math():print('小明正在学数学...')await asyncio.sleep(2)print('小明已经学了两秒数学...')async def zhexue():print('小明正在学哲学...')await asyncio.sleep(4)print('小明已经学了四秒哲学...')if __name__ == '__main__':# 开始计时start = time.time()# 建立任务库renwu = [english(),math(),zhexue()]# 初始化地盘loop = asyncio.get_event_loop()# 放置任务loop.run_until_complete(asyncio.wait(renwu))# 结束计时end = time.time()print('小明学完所有课程啦!总用时:'+str(end-start)+'秒!')

话不多说,先运行一下吧!

妈妈再也不用担心我的学习了!!!

总之思路呢,就是在这个任务组里,每个任务都有标签,完成或者未完成,如果完成了就会被删除掉,未完成就会一直在这个任务列表里循环循环…直到完成,只要遇到有await的命令,就会跳出去看一些其他的任务,还是能理解的叭,hhh
看到这里了,点赞,收藏,关注,拜托各位了!!!
300赞更新下一期!!
各位想看什么,跟小泽说一说吧!!!
awa

一起学爬虫(Python) — 08相关推荐

  1. 老司机带你学爬虫——Python爬虫技术分享

    什么是"爬虫"? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫: 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据.但实际操作,老 ...

  2. 01-为什么要学爬虫-python小白爬虫入门教程

    学习目的以及需求 需求来自于:抓取的某个网站或者某个应用的内容,提取有用的价值 实现手段 模拟用户在浏览器或者应用(app)上的操作,实现自动化的程序 爬虫应用场景(利用爬虫能做什么?) 大家最熟悉的 ...

  3. 一起学爬虫(Python) — 10

    一起学爬虫(Python) - 19 年轻人,进来学自动化 高效爬取美丽的图片 任务目标 任务流程 step1:复制 step2:粘贴 step3:重学异步 什么是异步 勤奋的小明 理解小明 理解~~ ...

  4. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  5. python好学嘛-爬虫Python入门好学吗?学什么?

    爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...

  6. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城-Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫:- 定义调度器- 定 ...

  7. python是什么意思中文、好学吗-爬虫Python入门好学吗?学什么?

    爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...

  8. 从业老学姐Python经验分享,别再相信培训机构“爬虫好学”的鬼话了,少走弯路!

    嗨~我是小鱼 前言 相信很多小伙伴在学习编程时都会去网络上搜索资料,寻找一些前辈的学习方法.这样的开始未尝不可,但是,在搜索的过程中你会惊讶的发现,网络上铺天盖地的"三个月速成python& ...

  9. Python爬虫是个啥?学了Python爬虫有什么用?

    什么是Python爬虫 Python爬虫即使用Python程序开发的网络爬虫(网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫指一段自动抓取互联网信息的程序,从互 ...

最新文章

  1. matlab uitree update,elementUI tree 懒加载 更新节点
  2. PHP工厂模式的研究
  3. linux下root密码修改方法
  4. 微软 VSCode IDE 源码分析揭秘
  5. selenium随笔
  6. Mybatis中输入输出映射和动态Sql
  7. html中使用静态图片做一个csdn网站的首页
  8. 两种方法求解 正数数组中 两个数相减 的最大值
  9. saas系统是什么_为什么SAAS食堂管理系统更受人们的欢迎?
  10. Flutter代码锦囊---自定义曲线裁剪
  11. vue3中这几个变化你要注意了
  12. android 接口的调用方法参数类型转换,Android NDK开发之JNI基础
  13. crt怎么退出编辑模式_securecrt怎么退出当前指令
  14. 北航计算机组成重修,北航计算机组成原理123希望大伙把作业上传.pdf
  15. 黑鲨官网装机大师工具如何制作u盘启动盘,u盘启动盘制作方法
  16. 在乌班图系统上安装yum
  17. phpdesigner怎么写php,phpdesigner
  18. Mysql数据库实现分页查询
  19. Java AES/ECB/PKCS5Padding加密和PHP解密的实现
  20. 怎样压缩图片到100k?如何把电脑图片缩小kb?

热门文章

  1. codeforces 1569 D. Inconvenient Pairs
  2. DeepMind提出关系RNN:构建关系推理模块,强化学习利器
  3. php外卖小哥,【看点】外卖小哥,谢谢你(随笔)
  4. 用IP地址反查主机名
  5. 让程序在崩溃时体面的退出之Unhandled Exception
  6. 服务器win系统手机怎么连接,[教程+软件+云电脑]win系统服务器手机远程连接教程...
  7. Matlab 仿真——单自由度倒立摆(1)系统建模
  8. 在attachments上做的八道题
  9. transferto()方法,是springmvc封装的方法,用于图片上传时,把内存中图片写入磁盘
  10. 互联网营销和分析专用名词速览