谷歌Kick Start线上编程第二课

上篇文章中,我们介绍了Kick Start中一道简单的交互式问题——Number Gussing作为入门引导,这是2019年的Round A中的问题,相信大家对于题目已经有了一定的了解。接下来的这篇文章我们将会介绍一下2018年Round A的三道题,希望大家通过文章能够熟悉Kick Start的题目。
2018年Round A中包含三道题目,分别为23分,29分和48分,总分达到51分即可通过比赛。下面详细介绍每道题目。
Read more

谷歌Kick Start线上编程第一课

谷歌的校招活动已经开始了。如果对Google的校招途径不是很了解的话,大家可千万不要错过这个千载难逢的机会。一般来说,可以参与谷歌校招的途径有两种:一种是个人发送简历给谷歌校招邮箱;另外一种方式就是通过参加Google官方的Kick Start线上编程测试。有些朋友可能觉得线上编程测试会很难,而且参加的人会很多,获得面试的机会渺茫。其实此言差矣,相对于直接发送简历给谷歌校招邮箱,参加Kick Start线上测试可以算是非常高效且成功率更高的途径。并且,谷歌官方也是非常鼓励大家参加Kick Start线上编程测试。本文不对Kick Start和谷歌校招做过多的介绍了,有兴趣的朋友建议微信扫描文末二维码加老船长微信获得更多相关谷歌校招的内容。

谷歌Kick Start线上编程需要讲的内容非常多。关于Kick Start线上编程系列课程,计划将包括10篇文章以上,主要是介绍和讲解历年历届的Kick Start线上真题和解题思路,为大家排忧解惑。本文是整个系列的第一篇,希望对大家有所帮助。
Read more

M3U8流视频数据爬虫详解二:M3U8视频网络数据分析与爬虫设计

在开始写M3U8流视频数据爬虫教程的时候,本打算只写一篇文章。在文章《M3U8流视频数据爬虫详解一:M3U8视频文件详解》中,我们详细描述了M3U文件的定义和M3U8文件的详细结构,并且给出了实际样例。在写作和编辑后期,我们逐步发现有很多细节还是不能省略的。但是如果教程太长,就不利于读者对于内容的理解和吸收。最后决定把“M3U8流视频数据爬虫”分为三个部分完成。第一部分就是之前的《M3U8视频文件详解》。第二部分就是本文,将主要覆盖Chrome浏览器分析工具介绍,流视频数据源的网页分析,爬虫设计。本系列教程的最终目标是,读者经过学习以后,能够独立地从数据源分析到完成数据爬虫程序编写。
Read more

M3U8流视频数据爬虫详解一:M3U8视频文件详解

最近接触大数据和人工智能方面的工作,常常需要爬取视频数据。而现在大部分视频客户端都采用HTTP Live Streaming(HLS,Apple为了提高流播效率开发的技术),而不是直接播放MP4等视频文件。其特点是将流媒体切分为若干TS片段(比如几秒一段),然后通过一个扩展的M3U8列表文件将这些TS片段批量下载供客户端播放器实现实时流式播放。因此,在爬取HLS的流媒体文件的思路一般是先下载M3U8文件并分析其中内容,然后在批量下载文件中定义的TS片段,最后将其组合成mp4文件或者直接保存TS片段。说说简单,其实在实际操作中,会遇到很多复杂的问题,例如m3u8文件下载不下来,ts片段文件被加密了,甚至加密ts片段的密钥也被加密了。本文将分享一个实际案例供大家参考。
Read more

使用PyCharm调试开发Scrapy Cluster

PyCharm是比较流行的Python开发集成环境。功能强大而且非常易用。然而,我在实际工作中发现,很多朋友还不会使用PyCharm的调试功能和断点单步调试。如果说简单Python脚本只要写几个print语句就足够了,那么在开发Scrapy Cluster的爬虫过程中,善用PyCharm的调试功能和断点单步调试就真的可以事半功倍了。比方说,最近正在研究Scrapy Cluster源码的运行机制。在理解其机制的过程中必不可少需要设断点调试代码,而PyCharm作为强大的Python IDE在调试、Project管理中提供了许多方便,因此打算写此文档来记录在Pycharm中调试Scrapy Cluster爬虫的学习过程和一些坑。
Read more

详解Scrapy Cluster中Kafka与Redis的消息生产和消费

相对于Scrapy框架,增加了Kafka和Redis模块的Scrapy Cluster要复杂的多。因此要搞清楚各大模块之间是如何工作的,就至关重要了。在Scrapy Cluster框架中,有三大系统模块:Kafka,Redis,Scrapy Spider。其中Kafka和Redis之间的消息传递是通过kafka_monitor.py组建实现的(单向连接)。Scrapy Spider和Redis的连接是通过distributed_scheduler.py实现的(双向连接)。Scrapy Spider与Kafka之间的连接是通过pipelines.py里面的KafkaPipeline类实现的(单向连接)。
Read more

Scrapy Cluster新手教程

最近正在接触大数据和人工智能方面的工作。为了满足数据量需求,需要开发一个爬虫系统来收集数据。在网上查了很多资料,发现大家用得比较多包括Scrapy, Scrapy Redis和Scrapy Cluster。前两个项目用得人比较多,也非常容易搭建。相比之下,Scrapy Cluster的相关文档少很多,网上的资料也少。因此就打算写一篇文档,记录以下学习过程和一些坑。
Read more