0. requests 模块, beautifulsoup模块, css选择器语法, re 正则模块, http 头编写, cookies, json解析等一定要掌握至熟练及以上程度.
1. 爬取重 ajax 页面, 推荐谷歌优先搜索 phantomjs, 其次selenium.
2. 破解图片验证码, 推荐谷歌开源库 pytesser (感谢 @simons 的吐槽), 进一步深入可以学习<高等数学-线性代数>, 谷歌搜索 pandas, numpy, k近邻算法.
3. 过滤器, 推荐谷歌搜索 布隆过滤器 及其c实现; 谷歌搜索 python 如何导入c模块.
4. 分布式爬虫(消息队列). 推荐谷歌搜索 rabbitmq.
5. 任务调度. 推荐谷歌搜索 schedule.
基本上是这样一个学习阶梯. 另: 反对学习任何爬虫框架, 尤其 scrapy, pyspider. 原因:这两个框架太优秀,太全。
进阶的第一门课一定得是学会自己抓包,分析请求和返回数据。这当中会有一些字段恶心到你,比如通过base64或者md5加密,在模拟登陆验证中通常还会遇到RSA算法。如果你说你懒得学,那么上大杀器Selenium,但是你要忍受它对系统资源的占用(往往要启动浏览器和多个标签页)和不那么快速的爬取速度。
针对一些网站的爬取就像是在玩攻防,网站设置了种种反抓取的坑等着你掉进去。这时候你要学会维护好自己的User-Agent,维护好自己的Cookie池,维护好自己的代理IP池,添加恰当的Host和Referer,以让对方服务器觉得这一切看起来都跟真的一模一样,那么你的爬虫开发能力,已经入门了。
到此为止,这些知识还和 Python 没有半毛关系,但你知道了要干什么之后,再去搜 Python 相关的工具库,你就会发现原来 Requests 可以轻松构造一个包含自定义 payload 和 headers 的 post 请求;你就会发现原来 Scrapy 中可以使用TCP包注入来伪造IP,还能玩SYN FLOOD拒绝服务攻击(误)……
所以说,你要做的是爬虫进阶,再用 Python 去寻找一个快捷的实现途径,然后就会发现,还是 Python 大法好,不愧为黑客第一语言。
使用 Google 的 OCR 开源库 tesseract,对应的Python包是pytesser,如果只是做简单(没有数字重叠)的数字识别,那么仅需调用接口就能完成识别。