熟悉cookie登陆原理,熟悉各种反爬虫机制,如账号封禁,IP封禁、验证码、Ajax动态数据加载等
熟悉python的数据结构和算法
熟悉网络请求库Requests,Urllib,Urllib2,了解grequests异步HTTP请求库
熟悉HTML、JavaScript、CSS、Ajax等前端知识
熟悉自动化测试框架 selenium 、Appium,熟悉jmeter、badboy,了解Splinter
熟悉Beautifulsoup、Xpath、Re正则,Android端APP元素定位工具appuiautomatorviewer等
熟悉Mongo、Redis、MySQL数据库,了解Hbase、Hadoop、Spark
熟悉Django、flask,经常编写API接口,供其他部门使用,了解Jinja2、Mako-python等,了解SQLAlchemy、Peewee等ORM库
熟悉HTTP协议、TCP\IP 等协议
熟悉scrapy框架,了解pyspider等其他爬虫框架
熟悉pycharm、sublime、vim,了解Androidstdio
熟悉网络编程,熟悉socket,了解pulsar、pyzmq、Twisted等库
熟悉NGINX、uWSGI、gunicorn等的配置与使用
熟悉python 版本和环境管理库virtualenv
熟悉python可执行文件打包库py2exe、PyInstaller等
熟悉Linux与Windows定时任务使用
了解Huey、mrq-Queue、rq-python、simpleq等用于处理事件和任务队列的库
了解GUI编程相关的Flexx、kivy、pyglet、PyQt等库
了解自然语言处理库NLTK、SnowNLP、spaCy等
了解newspaper、python-goose、textract等
二、分布式微博爬虫:
爬取目标:微博平台
技术与工具:抓包工具fiddler、docker、requests、进程、协程、flask,redis做中间缓存和消息队列,mongo做最终数据存储,crontab定时启动。
项目目的:为了获取用户在网络和现实世界的唯一标识ID-手机号,以便去各大平台比对并获取用户更多信息,为后面做用户画像和精准营销做准备,产生更大的商业价值。
模块:初始代理获取与存储模块、代理的检测与转存模块、手机号码生成模块、核心洗号模块、扫出号码上传模块、定时重启模块。
遇到问题:扫号速度慢,扫号量波动大(0-50%);并发数上去后,代理请求频繁,被代理网站封禁。
解决过程:通过研究与尝试代理获取URL链接的配置参数,代理网站ip改为一次获取20000个ip,由各个docker中的爬虫实例根据相应算法按需获取,并把扫号爬虫并加大发量,充分利用计算机CPU、MEM等资源。最终,即解决了IP封禁问题,扫号量波动值大幅下降趋于平稳,一直维持在0 - 7‰,扫号速度也提升13.5倍。
最终结果:在公司现有条件下,以最小的代价,最快的速度,在微博平台上扫完了所有中国号段。