基于Charles数据采集自动化的一次实践
前提
数据采集,一般直接调用数据传输接口。当数据传输接口的调用过于复杂时,比如:请求参数多层或自定义加密等,这个时候不妨考虑基于第三方代理软件直接拦截传输的数据。
拦截传输的数据,完整流程:设置第三方代理、程序模拟人操作、输出第三方代理软件拦截的数据、解析并存储数据。本文的第三方代理软件为Charles,故以上流程基于Charles进行演示。
设置第三方代理
进入Charles主页面后,如下依次点击,查看代理的IP与监控的端口。
如果使用Selenium等模拟人操作网页,可忽略此步;如果使用Appium等模拟人操作手机APP页面,不可忽略此步。
模拟人操作
可使用Selenium等模拟人操作网页、使用Appium等模拟人操作手机APP页面等,此处不作累述。
输出第三方代理软件拦截的数据
默认情况下,Charles会展示所有拦截的请求。
为方便查看数据接口且提高数据处理的性能,Charles提供请求过滤功能;可如下依次点击。
Charles提供分钟级的请求自动导出功能,可指定导出路径和导出文件的格式。
解析并存储数据
以“JSON Session File”为例,数据结构如下,可根据需要进行解析。
补充
拦截的请求里除了数据外,还有Url、请求头、请求体等。有些网站Cookie、Session等爬虫资源更新的频率较低时,该方案可用作相应的爬虫资源的更新。