前面有篇文章讲了我在数据方向是怎么学习的,像前天也分享了如淘宝模拟登录这种难度较大的网络请求分析和模拟、今天讲点简单的内容,给想入门的小伙伴一些经验。
现在数据处理相关技术大都是以Python作为编程语言的,所以你想做好数据相关的工作的话,Python必须玩得溜。另一方面,这也并不难,因为数据工作对Python的要求也并不是特别高。有点矛盾对吧,我的意思是,你其实也不需要懂Python的奇淫异巧,就简单的语法学会,然后熟悉相关的类库就好了。我自己不是Python后端工程师,如果比Python技术的话我当然比不过他们,但是在处理数据,像抓取、分析和挖掘方面还是有一些经验分享的。
Python得入门我觉得很容易,廖雪峰前辈写的Python教程很棒,需要学Python的小伙伴可以去学习。强烈建议边看教程边自己敲代码实验,这个过程很重要。像我其实是完全自学的,今天还有群里小伙伴问我自学有什么经验,一方面你要保证自学的效率足够高,另一方面像数学啊编程啊这种东西肯定是要下手去练的,熟能生巧,练得多了甚至都形成肌肉记忆了。Python的入门我就推荐廖雪峰前辈的教程啦。稍进阶点的Python应该看什么书呢?我这里推荐《Fluent Python》。至于学Python2还是3,我选3,原因不解释。
数据抓取的学习呢,分为两个过程。一是请求分析,二是并发处理。其实数据抓取需要学的库就两个,一个是requests,一个是scrapy。简单的数据下载我通常选requests来完成,这个的学习直接看官方文档就好了,很简单。遇到解决不了的问题可以问Google和Stackoverflow。分享个果壳登录的requests小例子给大家。
如果是大量数据需要处理或者有并发需求的话,就要考虑用scrapy来解决了。并且scrapy毕竟是成熟的框架,对爬虫、网络请求以及数据流的处理可以分别通过spider middleware、download middleware以及pipeline来定制,可以说能满足各种复杂的需求。再来简单看一个scrapy的demo。
这个demo完成了https://www.news-medical.net/网站的新闻抓取。除了scrapy,还有一个叫pyspider的爬虫框架也挺有名,但是个人建议不要去碰。我做过2个月多的pyspider的项目开发,是个大项目,然后开发过程中就遇到很多pyspider的坑,比如定时调度无法调起,比如代码调试很不方便,比如爬虫间调用需要on_message传递数据而scrapy一句yield from就解决了等等问题。当然pyspider的作者也是能力很强的,我肯定写不出像类似的东西,但是还是建议大家不要在产品环境中使用pyspider,玩具可以玩玩试试。
数据抓取的书的话给大家推荐《Web Scraping with Python》,另外scrapy的官方文档写的很详细,建议要在数据抓取方向发力的小伙伴熟读文档。看书看文档是一回事,另一方面还是建议大家多做项目,实战演练。
说到数据抓取或者爬虫,有一个绕不过去的问题就是反爬。其实被反爬限制的本质就是因为你没完全模拟浏览器的请求。这个学习和探索的过程,就是网络请求分析。像前几天给大家讲的淘宝的模拟登录,就是很复杂的请求分析了,可以涵盖反爬的很多方面。当然像Usre-Agent这种简单的反爬它并没有涉及,大家可以自己补充一下。想要做到一个优秀的爬虫工程师的话,就抓紧练习自己的网络请求分析能力吧~
再来聊聊数据分析的学习。值得一提的是,在学术界用R语言做数据分析的比较多,像我在中国香港中文大学读统计学博士的朋友用的就是R语言;业界的话R和Python都会有,并且我个人觉得Python的生态会更好一些。数据分析的入门建议从numpy、pandas这个两个库入手。书呢推荐《Python for Data Analysis》以及《利用Python进行数据分析》。然后一般做项目啊,数据分析的结果是需要做可视化的,Python做可视化的话可以用matplotlib,或者用js做可视化用个很棒的库是d3.js,更炫的3D可视化可以推荐three.js。像这种可视化工具的学习其文档就写的很棒。我提到多遍,遇到问题善于利用Google这个工具,像我自己学习的话就是通过Google查阅资料解决遇到的问题的。
大数据的话主要就是流行的库和框架的使用了,这些都必须有实战经验。像大数据处理平台Hadoop、Spark,消息队列kafka,非关系型分布式数据库Hbase,分布式应用程序协调服务ZooKeeper,数据仓库工具hive等。每一个框架都是个难啃的骨头,如果想朝大数据工程师发展的话建议去公司实习,实战操练其中的技术。
数据挖掘的入门就需要学习机器学习的相关技术了,我本人也在探索学习中,在看的书有《数据挖掘:概念与技术》、《机器学习导论》。大家有什么好的经验或者分享大家可以一起交流。
文中提到的相关资料都可以加入知识星球获取,也可以与作者进行深入讨论。
领取专属 10元无门槛券
私享最新 技术干货