爬虫实习日志

做爬虫实习工作了快 1 月了,故整理一下思绪。

第一周的一两天熟悉工作环境,做了简单的WEB爬虫项目,以为是练手的…没想到第二天就直接布置项目了,虽然比较简单,后续也会继续维护修改。第二周开始主要做APP爬虫方面的东西,涉及到的量比较大,现在也还在编写,主要通过这些项目和一些杂项掌握的有:

  • 分布式爬虫掌握、学会优化项目
  • 初步了解了逆向工程
  • 熟练掌握APP抓包
  • 对安卓Xposed破解SSL pinning有初步了解
  • 对scrapy和scrapy-redis框架更深入了解
  • redis、kubernates、docker、git技能掌握

中途花了一两天阅读了scrapy源码,有比较大的收获。在编写项目过程中写了一些extension、middleware、其他自定义模块,还有Xpath、正则等等这些技巧细节方面不展开了。

除了这些硬技术,在项目代码上,能跑不一定好用,考虑到以后的维护,很多东西是要仔细考虑的,比如spider类、item的字段、redis_key、redis_item等等是值得花心思去想,由重构了一天项目代码的我有感。

优化爬虫上,除了单机scrapy、简单scrapy-redis的逻辑优化,在整个项目层面上还要解耦。既然有kubernates,就要发挥k8s的优点,学会写Dockerfile和yaml文件,让整个项目低耦合,便于调试、管理和维护。低耦合具体表现在url,requests,key,items等保存在redis中,redis中的具体items又由其他脚本转移到mysql。一个较大的爬虫则可以拆分功能为几个爬虫,打包成不同docker镜像,启动命令用Dockerfile中的CMD,在部署时kubernates又可以再重写CMD。有日志,可分步执行,容器组的并发可控,易控,比scrapy更可靠。

杂谈:
今天成功干掉了小红书,获取到对应数据,首先我们要找的小红书的数据比较隐蔽,属于比较模糊的标签,没有具体定义而让我自己去想办法,之前是花了一些时间没找到。找到接口和对应数据后,需要签名等等一堆字段,唯一幸运的是网上有人做过,但逆向实在是下策,而且字段中有session_id,完全掌握在服务端手中,于是看向了Appium。还没学完Appium…就有点烦躁,突然想到可以从小程序入手,最终是 APP->小程序->WEB端仅剩的接口爬取了所需的数据。这样的例子还挺多的,需要有发散的思维。

你可能感兴趣的:(随想,爬虫)