【20天搞定Python爬虫】第八天:redis在爬虫中的应用

Posted on 8/25/2022 at 12:00:00 上午

参见:Python标准库包含了一些模块来帮助创建简单的CGI程序:**cgi—在CGI脚本中处理用户输入**cgitb—当在CGI应用中出现错误时,不再显示500服务器内部错误的消息,而用更好的错误回溯代替。

动态网站不是基于文件系统中的文件,而是以程序为基础。

**如何学习Python**Python上手很容易,基本有其他语言编程经验的人可以在1周内学会Python最基本的内容.它们包括:1.常用内置类型(int,float,bool,bytes,str,list,dict,set)的使用.2.分支if-else循环while迭代for的语法.3.def定义函数,调用函数.你再花1周学习些:1.类2.异常此时,有些人就在简历中得意的自称”会”Python了.但是学到如此程度,在实际编程中会经常遇到挫折,主要源自理解不够深入,仅仅Python语法和API层面体验了一下.随意列举一些新手普遍存在的问题:1.不了解Python对象模型,变量名,对象概念含混.2.不了解可变对象和不可变对象,尤其是int.3.不了解切片意味着拷贝,在循环中大量使用,影响效率.4.不了解切片是浅拷贝还是深拷贝.5.遇到bytes和str(2.7中的str和unicode)就头晕.6.经常在需要使用is的场景使用==.7.不了解def是运行时执行语句,并且是赋值语句.8.类属性和实例属性混淆.9.不了解在函数中修改可变对象参数会对调用者产生影响,导致莫名其妙错误.10.企图在函数中修改全局变量,没有使用global,而创建了本地变量.11.以可变对象做函数默认参数.拥有某项技能的程序员的价值,可以用学习技能所需的成本来衡量.你用2周学习达到的这种程度,对于企业就是没有价值的,因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度.Python的简洁易用,快速开发对项目有价值,但这不是你的价值,是Python的价值.所以提高自身价值,也就是不让别人轻易追上你.以极低的成本替代你.你只能快跑,进一步学习,Python语言层面还需要学习下面一些内容:1.使用生成器,迭代器2.函数式编程,匿名函数lambda,map,reduce,filter3.列表解析,字典解析,集合解析,生成器解析4.运算符重载(__setattr__,__getattr__,__getitem__,__gt__,__lt__…)5.property,描述符(__get__,__set__,__delete__)6.上下文管理器(__enter__,__exit__)7.深入理解面向对象上述都是语言层面的,属于内功.实战中当然也需要一些更为具体的外功,训练外功可以从熟悉Python标准库开始,这些模块能进入标准库说明他们足够好并且在实际项目中足够常用,列举一些极为常用的:1.正则表达式re2.迭代工具itertools3.常用数据结构collections,heapq,array4.处理二进制数据struct5.随机random6.系统调用os7.Python对象序列化pickle8.多进程多线程处理threading,multiprocessing9.网络socket,urllib10.系统参数sys无论练习内功或外功,结合实战都是最好的训练方式和检验手段,可以根据个人情况以及喜好选择,如:1.使用django,flask开发网站.2.开发网络爬虫或使用Python爬虫框架(如scrapy).3.写一些自动化运维脚本,定时读取某软件log,出现异常自动发邮件.4.使用selenium对网站进行测试.5.使用Python开发树莓派小车(电机,传感器驱动).6.使用Python开发Vim插件,如在vim中做一个音乐播放器.7.使用Python做算法题,如leetcode.8.opencv做图像识别.9.使用numpy和pandas做数据处理.10.使用机器学习库sklearn,tensorflow做应用.11.使用PyQt编写桌面应用.12.使用scipy,matplotlib做科学计算.13.使用Python做渗透测试…….个人建议选择小项目进行实训,有些新手上来就想定一个大目标,做的时候很挫折,往往半途而废.把小东西先实现,然后优化.接下来添加新功能,慢慢迭代把小东西做大.这样在做的时候,每实现一个小功能你都会有成就感,激励继续前进.可能经过比较漫长的一段时间,你成为了一个熟练的Python应用程序员,还有些高级话题可以继续学习:1.装饰器2.元类这些高级话题在开发框架中经常使用,它们可以帮你创建更灵活的代码.通常自称一个月光速学了会Python的人基本都不是天才,只是浮躁,目标定的比较低而已.不要太过急功近利,慢慢玩,精进.如果你觉着编程有趣,成长也就不再痛苦,祝学习愉快.**如何在Web开发中使用Python****底层视角**当一个用户访问网站时,他们的浏览器会与网站的服务器进行连接(这称为请求。

**安装redis****万博manbetx官方登录网址建立连接**连接redis我们使用的是redis.Redis(host,port,decode_responses),加上decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。

命令如图:至此Redis在Windows下已经安装成功!如果要进入交互模式,则在终端页面输入:**redis-cli**,成功连接到Redis后即可操作Redis中的数据类型。

这些程序能用服务器支持的任意语言完成。

**2.社交功能**点赞、关注、好友、推送、下拉刷新等是社交网站的必备功能,社交网站的访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对容易地实现这些功能。

Python的wiki有专门描述CGI脚本的页面,里面有关于CGI在Python中的一些额外信息。

**常应用于:1、对数据量大的集合数据删减2、任务队列**添加数据获取数据其它操作**set无序的集合**Redis的Set是string类型的无序集合,元素具有唯一性不重复。

**常用网关接口**这个接口,通常被称为CGI,是最古老的,几乎被所有web服务器很好地支持着。

这就使得整个接口在低负载状态的时候才能正常使用。

将下载的压缩文件解压到一个固定的目录,使用DOS命令窗口进入该解压目录,该目录下主要文件介绍:redis跟其他数据库一样,也需要启动服务器,命令(redis-server.exeredis.windows.conf)如下:该命令中的redis.windows.conf是Redis中的配置文件。

但是由于自身功能所限,对于大型的Web程序,Bottle的功能略显不足。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

Python则被用于构建YouTube、Instagram、桌面版的Dropbox、Reddit、Bitbucket、Quora、Spotify、Pinterest、Facebook的内部服务以及PayPal!2、架构在你选择技术时,各种工具也非常重要。

Django基于MVC构造,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。

除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。

**设置键获取键查看过期时间运算其它操作**hash**Redishash是一个键值(key=>value)对集合。

Redishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

拿来了解女朋友情绪变化,顺道自动回复。

添加元素获取元素其它操作集合操作**zset有序从大到小排序**Rediszset和set一样也是string类型元素的集合,且不允许重复的成员。

**常应用于:排行榜应用,取TOPN操作**添加元素获取元素**数据库切换****其他****Python中操作Redis**redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。

≖ˇェˇ≖。)—-(◕ܫ◕)—-(`◕‸◕´+)—-(_)—-(◉ืൠ◉ื)—-ㄟ(◑‿◐)ㄏ—-(●\◡\●)ノ♥—-(。◕ˇ∀ˇ◕)—-(◔◔)—-(´◔‸◔`)—-(☍﹏⁰)—-(♥◠‿◠)—-ლ(╹◡╹ლ)—-(๑꒪◞౪◟꒪๑)”str_list_emoj=str_emoj.split(\—-\)if((cf.get(“configuration”,”flag_wx_emoj”))==\1\):flag_wx_emoj=Trueelse:flag_wx_emoj=Falseprint(str_list_emoj)设置节日祝福语情人节祝福语str_Valentine=cf.get(“configuration”,”str_Valentine”)print(str_Valentine)三八妇女节祝福语str_Women=cf.get(“configuration”,”str_Women”)print(str_Women)平安夜祝福语str_Christmas_Eve=cf.get(“configuration”,”str_Christmas_Eve”)print(str_Christmas_Eve)圣诞节祝福语str_Christmas=cf.get(“configuration”,”str_Christmas”)print(str_Christmas)她生日的时候的祝福语str_birthday=cf.get(“configuration”,”str_birthday”)print(str_birthday)设置完相关参数以后,我们再来学习一下,如何每天教女友学英语:获取每日励志精句defget_message():r=requests.get(“http://open.iciba.com/dsapi/”)note=r.json()\note\content=r.json()\content\returnnote,content如果你愿意,可以在上面对时间的判断中,加入一些其他你想要的,这样你女友就更开心啦!后期如果有时间,我将会加上以上节日问候功能。

虽然还有可能用CGI写程序,但已经不建议这么做了。

八妇女节祝福语str_Women=嘿,女神节到了,祝我的女神开心快乐!你每天都是那么好看^_^平安夜祝福语str_Christmas_Eve=宝贝,平安夜快乐,你吃苹果了吗?n(*≧▽≦*)n圣诞节祝福语str_Christmas=小仙女,圣诞节快乐哦!(づ ̄3 ̄)づ╭❤~她生日的时候的祝福语str_birthday=亲爱的,生日快乐,我已经给你准备好了礼物哦,明天你就能看到啦!(*@ο@*)哇~**演示图片**!(https://pica.zhimg.com/50/v2-261107441d6360c6d6613a6eeb5909dd_720w.jpg?source=1940ef5c)!()!(https://pic1.zhimg.com/50/v2-d024629ab74c8f0bed5a5d1b03521b8e_720w.jpg?source=1940ef5c)!()!(https://pica.zhimg.com/50/v2-1e80d9ee17243edd31179ea07b623c43_720w.jpg?source=1940ef5c)!()!(https://pic3.zhimg.com/50/v2-529ae3495da2e9cfee7d6740a6a23401_720w.jpg?source=1940ef5c)!()至于没有女朋友的……要不考虑一下它!(https://pic2.zhimg.com/50/v2-fc43db93b5cc0608867898bb2778376f_720w.jpg?source=1940ef5c)!()你要是还不会Python……**转载自公众号七月在线实验室****↓**↓↓**公号后台回复666。

因而每个请求来临时都要花一定时间去启动新的Python解释器。

**4.排行榜功能**排行榜系统几乎存在所有的网站,例如热度排名、按照时间发布的排行,按照复杂维度计算出的排行榜。

将Redis添加到服务中命令如下:运行该命令之后,就可以通过netstartredis启动服务器或者通过netstopredis关闭服务器了。

**6.分布式和持久化**Redis3.0版本以后官方加入了分布式的支持,主要是两个方面:*Redis服务器主从热备,确保系统稳定性*Redis分片应对海量数据和高并发当然Redis还有很多适用的场景,每个技术都有属于自己的应用场景,只有对技术的特点有一定清晰的认识,才能更好的利用技术,发挥其最大的优势。

**常应用于:对两个集合间的数据进行交集、并集、差集运算。

在分布式爬虫中通过消息队列将各个单机联系起来,而最常被用作消息队列的就是Redis。

需要资料也可以关注微信公众号:Python专栏,事不宜迟,一起进步吧。

**常应用于:对两个集合间的数据进行交集、并集、差集运算。

Python的wiki有专门描述CGI脚本的页面,里面有关于CGI在Python中的一些额外信息。

此时在当前目录下就生成了libhello.so的动态链接库:(3)在hello.py中导入动态链接库,并调用C函数这里的ctypes是Python的一个外部库,提供和C语言兼容的数据类型,以方便的调用C编译的静态库和动态库中的函数,在此可以很肯定的说,ctypes中可定对C的数据类型进行了转换,使用时只需importctypes,然后导入动态库即可。

下面就是一个经典的helloword示例。

Posted on 星期四, 8月 25th, 2022 at 上午12:00 In 编程 | Comments RSS

Leave a Reply