100 行代码爬取全国所有必胜客餐厅信息
当我刚接触 Python 时,我已经被 Python 深深所吸引。
Python 吸引我的地方不仅仅能用其编写网络爬虫,而且能用于数据分析。
我能将大量的数据中以图形化方式呈现出来,更加直观的解读数据。
数据分析的前提是有数据可分析。
如果没有数据怎么办?
一是可以去一些数据网站下载相关的数据,不过数据内容可能不是自己想要的。
二是自己爬取一些网站数据。
今天,我就爬取全国各地所有的必胜客餐厅信息,以便后续做数据分析。
1.爬取目标我们要爬取的目标是必胜客中国。打开必胜客中国首页,进入“餐厅查询”页面。
我们要爬取的数据内容有城市、餐厅名字、餐厅地址以及餐厅联系电话。
因为我看到页面中有地图,所以页面一定有餐厅地址的经纬度。
因此,餐厅的经纬度也是我们需要爬取的数据。
至于全国有必胜客餐厅的城市列表,我们可以通过页面的“切换城市”获取。
2.分析目标页面在编写爬虫程序之前,我都是先对页面进行简单分析,然后指定爬取思路。而且对页面结构进行分析往往会有一些意想不到的收获。
我们使用浏览器的开发者工具对页面结构进行简单分析。
我们在 StoreList 页面中能找到我们所需的数据。
...
Python 三种遍历目录的方法,轻松帮你找出隐藏文件
无论在 Windows 系统中还是 Linux 系统中,都存在着隐藏文件以及隐藏文件夹。
隐藏文件夹一般是系统关键性目录,例如 Windows 系统中的 C 盘中的 Boot 文件夹、Windows 文件夹等。
在 Linux 系统中,一些系统配置文件或软件配置文件会被隐藏起来,如:系统环境变量配置文件 .profile。
有些时候,我们必须通过文件路径来遍历整个目录,然后找到隐藏文件。
本文的主要内容是给大家分享 Python 三种遍历文件的方法。
1.简单暴力法-递归假设在 E 盘中,有个名为“Python”的文件夹;
该文件夹中也有两个文件夹,分别是“A”和“B”;
另外,在“A”文件夹中还有一个 “results.txt” 的文本文件。
因此,“Python”文件夹的文件结构如下:
1234Python|--A| |--results.txt|--B
我们可以从上述看出,一个文件夹其实是一个树型的数据结构。
遍历树的最简单、最暴力的办法就是递归。
因此,遍历“Python”的文件夹的代码可以这么写。
123456789101112131415# -*- coding: U ...
今天, IG 帮我们圆梦
对于英雄联盟(俗称 LOL 或撸阿撸)游戏玩家来说,今天无疑是值得庆祝的一天。
IG (全称是 Invictus Gaming)零封对手 FNC,豪取我们盼望了 8 年的世界冠军。
看完比赛,我内心一直激动不已,只想说一句。
这只队伍确确实实是牛逼! 因为一开始它不被看好,队员都是东拼西凑的。
上单是一个没人要的上单,打野是借过来的打野,中单是付赠品,直播出道的下路,还有一个双排来的辅助。
他们依然能克服各种客观因素,在赛场上打出自己的风采。
拿我最喜欢的队员 theshy 来说。
第一把,theshy 来一手“千里走单骑”,强行开团,团队打出一波“2 换 5”,为第一盘奠定胜局。
第二把的刀妹更是秀,中路塔下花式补刀;然后在下波团战,theshy 化身“铁头娃”千里追击对手到敌方下路二塔,然后为小兵为踏板,强顶防御塔斩获双杀;最后一把团战,theshy 更是走单骑,秀一波一打五的操作,还全身而退。
由于前两把打出气势,theshy 第三把更加势不可挡。他拿出一手剑魔,人挡杀人,好像在他的眼中就没有防御塔这说法。
现在的我,已经不玩英雄联盟了。
但是自己还是会关注游戏比赛。
或许这 ...
Python 居然有这么奇葩的库--The Fuck
GitHub ,这个被广大网友戏称为全球最大的程序员同性交友网站。
在程序员的圈子中,可以说无人不知,无人不晓。因为这个网站托管着一些开源项目。
全球知名的大公司如谷歌,微软,腾讯,阿里巴巴等也会在 Github 上开源一些项目。
可以说 Github 上有很多优秀的项目。
作为一名程序员,在成长过程中往往离不开阅读别人的优秀代码。
猴哥每周都会定期去逛逛 GitHub 网站,暮色一些优秀的仓库。然后利用业余时间去学习消化。
自己今天看到一个非常奇葩但十分实用的 Python 库,顺便分享给大家。
这个库就是 The Fuck。
相信很多人看到 fuck 这个单词,很容易会联想到骂人的话。
其实不然,这个单词在外国有很多种意思。它可以当做语气词来用,表示非常的意思。
比如你刚好要出门,突然就下起暴雨。
这个可以用 the fucking weathe 宣泄自己的不满,而这短语表示的是非常糟糕的天气, 该死的天气。
fuck 还有很多层意思,感兴趣的东西可以自行搜索下。
在学习和工作中,我们会经常在终端上执行各种命令行。
如果输入的命令行错误,我们虽然很气,但是还是默默地再输入一次命令 ...
详解 Scrapy 中间键的用法
Scrapy 爬虫框架的出现,确实能让我们更加专注于数据抓取。
同时,我们借助 Scrapy 框架来爬取整个站点数据也显得更加容易。
虽然 Scarpy 负责 url 调度、网络请求、页面数据下载等工作,但是它的扩展性很高,其中就支持自定义中间件(Middleware)。
本文主要讲解中间件(Middleware)的用法。
1.什么是中间件中间件的运用比较广泛,如果直接从定义的角度去理解中间件会有点乱,我以分布式系统为例子进行说明。
在上篇文章,我讲到目前后台服务架构基本都是往分布式发展。其实分布式系统也算是一个中间件。
那什么是分布式系统?
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
我们从下图中可得知,分布式系统是介于操作系统和用户应用之间的软件。
那么不妨我们进一步拓展下思维去理解中间件。可知,中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。
2.中间件在 Scrapy 框架中的作用我们先通过一张图了解下 Scrapy 架构。
我们可以看到 Scra ...
10 张图带你了解后台服务架构演变
上篇文章讲了一些高并发相关的知识,相信大家对高并发有些简单的认识。
说到高并发,往往离不开分布式系统。
人们经常将两者拿来一起讨论,因为高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一。
可以这么说,目前应用商城上很多社交应用,网络游戏的后台服务都是分布式服务。
那具体什么催生出今天的分布式系统呢?文章的主要内容是讲讲大型网站的服务架构演变。
1.初始阶段的网站架构在互联网展露出萌芽的网络时代,网站基本都是小型网站。
网站的访客也不是很多,通常会将应用程序、数据库、文件等所有资源都在一台服务器上。
这里为 Java Web 服务为例。网站开发者可以使用 Tomcat 等 Web 容器直接运行 JSP 程序,然后将数据存储到数据库,文件直接存放到服务器的磁盘中。
就像这样子:
2.应用服务和数据服务分离随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。
大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。
这时需要将 Web 应用和数据分离,分别将存放到不同的服务器:应用服务器、文件服务器和数据库服务器。
这样 ...
高并发的那些事
“高并发”对后台开发同学来说,既熟悉又陌生。
熟悉是因为面试和工作经常会提及它。
陌生的原由是服务器因高并发导致出现各位问题的情况少之又少。
同时,想收获这方面的经验也是”摸着石头过河”, 需要大量学习理论知识,再去探索。
如果是客户端开发的同学,字典中是没有“高并发”这个名词。
这验证一句老话,”隔行如隔山”。
客户端开发,特别是手机应用开发,更多地是考虑如何优化应用的性能,降低 App 的卡顿率等。
本文是一篇科普文,分享自己近来学到的知识。
1.什么是高并发?由于分布式系统的问世,高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。
通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。
它经常会发生在有大活跃用户量,用户高聚集的业务场景中。
其实,高并发也离我们的生活并不遥远。
例如大学学校的选课系统,一到选课的时候,一大批学生同时选课,导致系统出现“不良反应”;
再如淘宝的 618 和 双 11 的购物活动;遇到节假日,12306 上演的“抢票大战”。
另外,DDos 攻击也能算高并发的场景。
...
中秋佳节,不妨读一本好书
时光荏苒,又值中秋佳节。因为中秋节是我国重要的传统节日,又是非常古老的节日。
所以它包括许多民俗文化活动。例如:祭祀月亮以怀念嫦娥, 合家团聚吃月饼,赏月等。
我的故乡——潮汕还是能很好传承古代的文化。
这得益于两方面:一方面,潮汕人的祖先是北方的大家族,他们为了躲避常年的战乱而来这里栖息;另一方面,潮汕地区的地理位置三面环山,南面朝海,交通不发达。
韩愈被贬潮州,曾总结过:“潮之州,大海在其南,群山拥其北”。
因此,我们会在这中秋月圆之夜,吃月饼,赏月等,当然还有重要的节日:听老一辈的讲古。
我母亲年轻时喜欢读书,加上平时也喜欢听电台的文学节目。
所以我母亲经常是主讲人。她会给我们讲成语典故、唐宋时期的民间故事、明朝的史学等。
在其中,最让我难忘的还是红楼梦的为人处事之道。
因为这两句诗世事洞明皆学问,人情练达即文章。教会我很多。
现在我已经毕业工作,深深体会到会做人做事的重要性。
这真的能事半功倍。
所以,我到现在还是会去阅读这方面的书籍。在这里,我也分享几本好书。
1.《唐浩明评点曾国藩家书(上下册)》曾国藩是一个资质平平的人,然后通过自我意志的“刻意训练”,成就阔大的事业。
...
带你了解代理 IP 那些事
因为 Python 语法简介以及强大的第三方库,所以我们使用它来制作网络爬虫程序
。网络爬虫的用途是进行数据采集,也就是将互联网中的数据采集过来。
在爬取某些网站时,我们经常会设置代理 IP 来避免爬虫程序被封。
我们获取代理 IP 地址方式通常提取国内的知名 IP 代理商(如西刺代理,快代理,无忧代理等)的免费代理。
这些代理商一般都会提供透明代理,匿名代理,高匿代理。
那么这几种代理的区别是什么?我们该如何选择呢?
本文的主要内容是讲解各种代理 IP 背后的原理。
1.代理类型代理类型一共能分为四种。除了前面提到的透明代理,匿名代理,高匿代理,还有混淆代理。
从安全程度来说,这四种代理类型的排序是高匿 > 混淆 > 匿名 > 透明。
2.代理原理代理类型主要取决于代理服务器端的配置。不同配置会形成不同的代理类型。
在配置中,这三个变量 REMOTE_ADDR,HTTP_VIA,HTTP_X_FORWARDED_FOR 是决定性因素。
2-1.REMOTE_ADDRREMOTE_ADDR 表示客户端的 IP,但是它的值不是由客户端提供的,而是服务器根据客户端的 I ...
Python 面试宝典
步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。
俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙伴会选择跳槽。
猴哥特意给大家送上一份 Python 面试的资料,资料都来源于 github。
1.interview_python该仓库提供的面试题目还是挺全面的,涉及到 Python 语言特性、操作系统、数据库、网络协议、场景面试算法题目。
同时,该仓库收集的面试题目也是很有深度。
举个栗子,在 Python 语言特性中,提到 Python 的闭包、迭代器和生成器、垃圾回收机制、面向切面编程 AOP 和装饰器等高级用法。
如果有小伙伴的算法知识比较薄弱,可以通过做题方式来理解。
Github 仓库地址
2.Algorithm_Interview_Notes-Chinese近两年来,机器学习算是 IT 行业的热点。有热点就有人才需求。
如果有小伙伴要面试机器学习的岗位。
可以关注下这个仓库。这个仓库主要收集算法、NLP、深度学习、机器学习面试笔记。
Github 仓库地址
3.system-design-prim ...