本帖最后由 赚小钱 于 2020-6-4 12:57 编辑
印象中,在使用 PIL 的时候,就用过读取长宽像素值。不确定 exif 的信息是不是在 PIL 库。更多的处理,都是使用的 OpenCV。
爬虫分成三类
1. 正则提取(不推荐)
2. css selector 还可以吧,不具有普适性,如果编码能力好,把操作 css selector 的部分,封装成插件,用起来还可以(一般)
3. chrome-headless,phantomjs,比较推荐这类,很多页面,使用了诸如 js 动态加载,iframe 这些前端技术,上面两种方式,就不好用了。还是浏览器类型的好用,尤其是这种,不需要图形界面的浏览器。(强烈推荐)
所以,总结出爬虫可能需要的知识
1. 正则,用的时候要注意使用的标准,posix,pcre,re2 等,有细微差别
2. css selector 去 MDN 学就行
3. 阅读官方文档,和所选语言的库函数文档
此外,还需要
1. 应对反扒机制,比如代理,代理池
2. 作为一个高素质的爬虫开发者,应该遵守 robots.txt 规则,比如,google 是遵守的,baidu 不遵守
3. 单线程,太慢了,就要去学并发编程,如何创建线程,进程
4. 学会并发编程,还要学会控制并发,比如连接池,线程池
5. 线程,进程之间数据交换
6. 爬虫运行过程崩溃了,如何恢复任务
7. 多线程也满足不了性能需求了,考虑多机分布式爬虫
8. 将爬虫从客户端架构,进化为 C/S 架构,或者是 B/S 架构
9. 完成第 8 条改进,就应该可以同时执行多个爬虫任务了,此时就需要考虑调度问题了
10. 允许暂停某个任务,优先执行某些任务,比如爬个图啦
11. 然后就是运维方面,学习 docker k8s 容器化部署
12. 使用 GitLab/GitHub 等平台管理源代码
13. 学习编写单元测试
14. 然后你会发现,单元测试好难写啊,然后,就要去学,如何编写可测试的代码
15. 提交代码,使用 CI 自动完成测试,使用 CD 自动部署代码
以上,是我能想到研究爬虫的发展路线,和所需知识。
爬虫不是任何一本书能讲清楚的。根据自己当前所处的阶段,选择对应的书籍。
上面 1 - 15 个阶段,不清楚的,我都可以推荐资料。
加油。