项目名称:热榜电影
1、明确所需数据种类、数量、入库格式等要求
2、F12分析网络请求定位接口,禁用就手动打开
3、遇到多种debugger。一个鼠标右键不在此处暂停,另一个是eval执行的,hook eval,如果 arg.indexof('debugger') 就return True,否则返回原函数逻辑。
4、定位数据接口。能正常调试代码后查看网络,清空cookie后刷新页面,然后搜索数据中特殊的数据来定位数据接口。
5、确认是否有需逆向的参数。curl格式复制之前定位到的包,用工具转requests直接运行请求,返回没问题,不带cookie返回数据也没问题,然后挨个注释headers中的奇怪数据。最终发现无需逆向。
6、scrapy爬取、数据去重。item定好数据的格式;数据先md5,创个列表放md5值,不在列表内就存数据并把md5值放入列表。
7、IP池的解决。开启scrapy EXTENSIONS,扩展的启停与signals.engine_started、signals.spider_closed信号连接。扩展程序隔一段时间自动从付费API提取代理IP放入列表,每次请求从IP池随机获取IP。
8、部署爬虫。mac是v8架构,我的云服务器是v4所以将项目压缩上传到服务器,在服务器用docker建立镜像。编写Dockerfile FROM python:3.9 COPY . . RUN pip install -r requirements.txt CMD scrapy crawl xx项目。 运行时 -v 指定VOLUME实现持久化存储。数据可在/var/lib/docker/volumes/指定的卷名/_data目录下找到。
9、微信通知。借助pushplus向微信发送消息,在scrapy pipeline.py 的spider_closed函数添加执行python的代码,该代码会向pushplus提供的API发送requests请求,然后我的微信会得到消息推送。