半路学Python爬虫,学到什么程度可以面试爬虫工程师?
python近几年越来越火爆,爬虫工程师也很火,市场需求挺大、工资还算可观,很多不是计算机专业出身的人被薪资吸引,也开始转战python爬虫,那么半路学Python爬虫,学到什么程度可以面试爬虫工程师呢?
首先要明确一点,python只不过是一个工具,学会了使用工具不代表你就能找到工作,要有用工具处理问题的能力才符合工作需求!就像爬虫工程师,java也能实现,想要靠你学的python找到工作,实践经验才是加分项!
回到问题,针对python的面试一般会涉及到下面几个部分:
一、python基础知识
爬虫给人的感觉就是对于Python编程的知识要求并不高,确实,搞懂基本数据结构、语句,会写写函数好 像就OK了。
自己业余玩玩还OK,如果你要找工作成功爬虫工程师,扎实的编程基础是必不可少的。除了基本的函数,Python的高级特性、面向对象编程、多线程、装饰器都要熟悉。
现在很多爬虫工程师的面试,对编程的基本功要求很高。编程的功底,以及对语言的理解,从某种程度上可以看出你的学习能力、发展潜力。 比如: Python2.x与Python3.x的区别 Python的装饰器 Python的异步 Python的一些常用内置库、多线程......
二、数据结构与算法
数据结构与算法是对面试者尤其是校招生面试的一个很重要的点,小公司可能不太在意。 从目前的招聘情况来看:重视数据结构与算法的重视程度与企业的好坏成正比。
三、Python爬虫
会爬虫和爬虫厉害是两码事,你要有Python爬虫相关的知识与经验储备,这通常也是面试官考察的重点。
包括但不限于: 你用过多线程和异步吗?除此之外你还用过什么方法来提高爬虫效率? 有没有做过增量式抓取? 对Python爬虫框架是否有了解?
一般来说,你需要掌握的技术有下面几个:
- HTTP必须要有很深刻的理解,这是你纵横网络的立身之本;
- BeautifulSoup、xpath这些都是基础操作了,一定要做到非常熟练;
- Scrapy框架要会用,要能信手捏来写个分布式爬虫;
- Webdriver、Selenium、PhantomJS也要会使用;
四、爬虫相关的项目经验
爬虫重在实践,除了理论知识之外,面试官更在乎: 你做过哪些爬虫项目?如果有Github最好 你认为你做的最好的爬虫项目是哪个?其中解决了什么难题?有什么特别之处? 以上是我在面试过程中,会碰到的一些技术相关的问题的总结,当然面试中不光是技术这一点,但是对于做技术的,过了技术面基本上就是薪资问题了。
五、面试经
初级:
- 网络基础:cookie,session,https,headers常用的字段,代理使用等等
- python基础:这个网上搜到的面经都得会,加上异步,多进程,多线程等等
- 爬虫:xpath,requests如何处理https,常见的反爬措施,举例说一个最难的爬虫过程,scrapy使用中的 细节,例如代理,cookie,传参等等。
- 数据库:数据库操作,并表之类的。
中级:
- 网络:几层网络层的细节,比如说说udp/tcp/smtp区别,说说10.x.x.x/127.x.x.x/192.x.x.x的区别,说说 DNS,谈谈路由交换机的区别
- python:多重继承,多态,单例用装饰器的实现,数组/生成器/列表解析效率等等稍深入的细节
- 爬虫:分布式爬虫的实现,给你一个任务你马上给出一个合理的架构,验证码的处理,增量数据爬取,写 爬虫时有没写些辅助工具。
- 数据库:sql nosql的细节,性能上的。
- 加分项:数据挖掘,机器学习,自然语言处理,能写网站,熟练操作linux,github小星星
六、几点建议:
1.大部分的公司都要求爬虫技术有一定的深度和广度。深度就是类似反反爬、加密**、验证登录等技术;广度就是分布式、云计算等等,这都是加分项!
2. 爬虫,不是抓取到数据就完事了,还需要数据抽取、清洗、消重等方面经验。
3.一般公司都会有自己的爬虫系统,而新进员工除了跟着学习以外,最常做的工作就是维护爬虫系统。
4.最后一个加分项就是前端知识,尤其是常用的 js、ajax、html/xhtml、css 等相关技术为最佳。
5.随着手持设备的市场占比越来越高,app 的数据采集、抓包工具的熟练使用会越来越重要
我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、
数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取
以上内容,不要求全部掌握,但是掌握的越多,那么你的竞争力就越大!找到好工作的可能性也越大!
上一篇: 容器化部署之看板工具: Wekan