半年实习日志总结

1.携程机票爬取问题

难点:api需要一个key才能够访问,该key由js经过复杂运算得出,由后端直接模拟请求十分复杂。而用phantomjs操作无头浏览器的方案会给服务器带来巨大压力,且爬取速度无法满足业务需求。

解决方案:使用phantomjs模拟到得出key后立即停止,再使用requests构造请求访问api。


2.PDF 模板问题

难点:系统需要能够将数据库中的数据自动渲染至pdf,由于每家客户的pdf模板不同,后端人员每次都需要根据模板编写相应代码将数据渲染上去,耗时、费力、效率不高。

解决方案:新增一个模板层,能够通过简单配置json来完成字段的绑定。模板层要考虑普通填空、选择、表格等类型。另外,为了实现让业务人员也能够配置json,编写了gui 页面,完成了目标。


3.Excel模板问题

难点:同pdf模板问题一致,系统需要自动生成excel数据,后端人员每次要根据不同的excel,编写大量的代码。

解决方案:同样将代码层分解为模板层与核心代码层,接收配置文件,完成总表导出。另外,可以通过xlwriter 来实现样式内容的提取,因此,可以直接通过编写Excel 完成配置。


4.验证码问题

难点:将客户信息自动上传至马来西亚官网,其中要进行两次验证码验证,这里采取打码平台方案,问题在于正常情况下平均需要40s时间才可以得到验证码答案。而客户在使用该saas平台进行提交时,高峰时间段往往在1小时内能够有200+次提交,验证速度远远不够,造成严重的任务阻塞。

解决方案:采用定时任务,每隔X秒进行一次如下任务:获取验证码图片,经过打码平台验证以后,将当前的session 和打码平台返回的答案存储在redis中,当有用户进行请求时,从redis池中直接取出session和answer 进行操作,速度得到大幅度提升。

你可能感兴趣的:(半年实习日志总结)