好长时间没有更新博客了,哈哈。
今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到 web!
中间涉及到的技术点有:
下面就给大家挨个说一下, 刚拿到需求其实还是很模糊的,因为一个都没做过,等静下心来去理解的时候,发现并没有那么难,反而很简单
一、分析页面请求头
本次登陆地址是 https://huoche.alitrip.com/hello.htm
1、先登陆了一遍查看了一下请求头,发现就携带了三个东西,隐藏 token,用户名,密码
一看一目了然,就一个后台页面,可想而知相对来说还是很简单,哈哈,下一步我只需要封装一下 cookie,然后带上 tocken,username,passwd 去登陆咯
给大家说下,python 的 requests 模块可以忽略 cookie,自己创建一个 session 对象,他自己去给咱们匹配 cookie,不用去挨个试 cookie,这样就节省了好多代码和时间
2、代码如下
最后一提交 post 请求,就可以判断有没有登录成功了,是不是很简单,哈哈!
下载也是和登录是一样的道理,下载的时候肯定也是像网页发一个 post 请求,然后就回去下载 exal 文件咯,python 有这么一个模块 xlrd,可以去操作 exal 文件,非常方便
代码如下:
- today = datetime.datetime.now() yesterday = today + datetime.timedelta(days = -1) trade_date = yesterday.strftime('%Y-%m-%d')
2、查看下载文件请求的 url,以及提交的数据,一张图一切都明白了
从图中可以看到,该文发送的 url,请求方式,请求头,和返回的数据
3、模拟请求下载,只需用提交一下日期就 OK 搞定,文件下载完毕,接下开要读文件拿自己想要的东西啦
- post_data = {
- 'orderExportDate': trade_date
- }
- sheet_content = ""
- for _ in xrange(3) : try: #得到exal文件流download_response = self.session_obj.post(download_url, data = post_data)#打开exal文件xls_content = xlrd.open_workbook(file_contents = download_response.content) sheet_content = xls_content.sheets()[0]
- break except Exception as e: continue
4、这个就众所周知,和读取文件一样,for 循环一行一行读取,然后把订单号挨个添加给一个列表啥啦乱七八糟的
- order_item = []
- for line_num in range(sheet_content.nrows) : line_item = sheet_content.row_values(line_num) if line_item[2] : order_item.append(line_item[2], )#订单号order_no#获取到所有订单号order_item = order_item[1 : ]
拿到订单号要去获取订单详情了,但是领导给我说这个已经有同事写好代码了,只需要调用那个接口就好,所以别人的代码我就不往上面展示了,原理很简单
requests 模块,请求 url,get 传入订单号,发送请求,就可以返回数据咯,web 页面展示,那个需求,每个公司都不一样,存入数据库,自己取自己想要的吧。
本文就到这里吧,学到一点东西的请点赞,哈哈
最后附带源码,用户名和密码就不告诉大家啦,啊哈哈
demo来源: http://www.cnblogs.com/aylin/p/6114818.html