大家好,我是毕加锁。
今天给大家带来的是用Python解决Excel问题的最佳姿势
文末送书! 文末送书! 文末送书!
项目总体情况
软件:Pycharm
环境: Python 3.7.9(考虑到客户可能会有不同操作系统,为了兼容性考虑)
技术库: requests、pandas、Pyqt5等(详见依赖文件)
需求分析
通过对客户需求文档分析和与沟通,大致有以下几个需求:
-
根据“单号归属”批量向3个接口提交数据
-
需要一个GUI操作界面
-
支持不同的业务员登录
总的来说就是一个POST数据提交和GUI开发。
项目实施
1.Post提交
这一块主要用到的就是爬虫技术,万年不变的步骤,都是先分析网页。
1.1登录
通过抓包发现,密码是明文,难度就降低了一半,然后用正确的密码再分析登录成功后的返回。
def login(self, username: str, password: str):
"""
登录
"""
url = "http://cloud.tiamaes.com:11349/erp/portal.bootstrap/SSOLoginAction/login.do"
data = {
"_tp_data": '{"parameters":{"userName":' + username + ',"pwd":' + password + '},"rowsets":{},"headers":{},"requestComponent":"0"}'
}
data = parse.urlencode(data).replace("+", "")
resp = requests.post(url, headers=self.headers, data=data, verify=False)
self.IDENTIFIER = resp.json()["headers"]["IDENTIFIER"]
return self.IDENTIFIER
发现登录成功后会返回一个“IDENTIFIER”参数,值是加密字符串,这样就很明显,光看字面意思都知道这个肯定有用,所以先记录下来。
1.2接口分析
由于我用的是测试账号,这个账号提交的数据都要删掉,为了不给别人注入太多的无效数据,这里就不再实际录入,以业务代码来说明。
-
获取车辆信息
通过分析发现,虽然客户给了一部分车辆的信息,但是还有多缺失的信息,需要自己补充。通过抓包发现,在输入车辆编号以后,会发起一个Ajax请求,表单里其他信息就是Ajax请求返回的数据。