使用python批量下载天猫数据并进行合并(非爬虫)

做电商运营少不了数据分析支持,无论是选品、选关键词、研究竞品还是开直通车、店铺引流都需要有数据支持。不过生意参谋虽然强大,但现在都只能显示“指数”,并且能查看的时间段有限,由于指数到实际值的换算规则不透明(不同品类应该是不一样的),只能估个大概。好在有很多第三方的数据网站提供天猫、淘宝的数据服务,可以做为生意参谋的补充。

前一段时间为了研究品类趋势,买了一个淘系数据服务的会员,可以查到你所关注的店铺每天的历史销售数据,并可以下载为CSV文件,这对于研究对标品牌还是非常有帮助的。然而问题是,官方标准版只能按天查看和下载,如果要查看一年的数据,就是重复操作365次,实在是不能忍。于是想到用程序猿一点的方式来搞定它,通常从网站获取数据需要用到爬虫技术,但这个网站直接提供文件下载,那何不直接用程序批量下载呢?

分析了一下下载文件的链接:https://www.xxxxxxxxxxxx.com/member/trades/detail/336649802?d=1575129600&act=out 果然是有规律的,那就好办了,盘它!!! 链接中间的第一串数字是网站要分析追踪的店铺的编号,d=…后面的一串数字其实是个时间戳,也就是日期。所以,要下载某个店铺全年的数据,只需要改变时间戳,并用浏览器发出请求,就可以实现浏览器下载了!

按照上面的思路,脚本写起来就比较简单了,完整脚本如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Dec  3 16:05:21 2020
@author: aladdin
"""
import time,datetime
import webbrowser # 实现这个功能的核心模块就是它了def days(str1,str2):  # 计算两个日期相关的天数,用于控制循环次数date1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d")date2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d")num=(date1-date2).daysreturn numdef months(str1,str2): # 返回某个月一共有多少天year1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d").yearyear2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d").yearmonth1=datetime.datetime.strptime(str1[0:10],"%Y-%m-%d").monthmonth2=datetime.datetime.strptime(str2[0:10],"%Y-%m-%d").monthnum=(year1-year2)*12+(month1-month2)return numstartdate = '2020-01-01 00:00:00'
enddate = '2020-12-12 00:00:00'
dd = '66164328'   # 系统中的店铺ID
urls = []timeArray = time.strptime(startdate,"%Y-%m-%d %H:%M:%S")
timeStamp  = int(time.mktime(timeArray))
print(startdate)
urls.append("https://www.xxxxxxxxx.com/member/trades/detail/%s?d=%s&act=out" % (dd , timeStamp))
daynum = days(enddate,startdate)
for i in range(0,daynum):
#  print(i)timeStamp = timeStamp + (1*24*60*60)datestr = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(timeStamp))urls.append("https://www.xxxxxxxxxx.com/member/trades/detail/%s?d=%s&act=out" % (dd , timeStamp))
#  print(timeStamp)
#  print(datestr)
#  print(urls[i])for url in urls:print("%d:%s"  % (i,url))chromePath = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"   # Chrome浏览器的安装目录webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chromePath))webbrowser.get('chrome').open(url)time.sleep(2)  #为了防止一下把浏览器跑死,下载文件请求间隔2秒钟

脚本逻辑很简单,但是可以快速解决问题,这就够了!

接下来还有一步,需要把下载下来的几百个CSV文件合并成一个,这又是一个费劲的活儿,还是用脚本来搞定它吧:

# -*- coding: utf-8 -*-
"""
Created on Thu Dec  3 09:53:44 2020
@author: aladdin
"""
import re
import glob
import pandas as pd
import winsounddef matchdate(datestr):match = re.search(r'\d{4}-\d{2}-\d{2}', datestr)if match:match = match.group()return matchelse:print("没有获取到有效日期")def hebing(csv_list, outputfile):for i in range(0, len(csv_list)):filepath = csv_list[i]df = pd.read_csv(filepath, encoding="gbk", low_memory=False)df = df.to_csv(outputfile, encoding="gbk", index=False, header=1, mode='a+')print('完成合并')
def quchong(file):df = pd.read_csv(file, header=None,encoding="gbk", low_memory=False)datalist = df.drop_duplicates()datalist.to_csv('C:/Users/aladdin/Desktop/result_qucong.csv', index=False,encoding="gbk", header=False)print('完成去重')if __name__ == '__main__':inputfile =  r"C:/Users/aladdin/Desktop/data2020/*.csv"    #要合并的文件路径outputfile =  r"C:/Users/aladdin/Desktop/combine.csv"      #合并后保存的文件路径csv_list = glob.glob(inputfile)for csv in csv_list:print(matchdate(csv))df = pd.read_csv(csv,encoding='gbk')df['日期'] = matchdate(csv)    # 因为下载下来的CSV文件是以日期命名的,但是数据中并没有日期列,所以这里要插入日期列,以便后续分析df.to_csv(csv,encoding="gbk",index=None,header=1)hebing(csv_list, outputfile)quchong(outputfile)  # 去除合并后重复的标题行print("Work done! 合并成功!!!")duration = 1000  # millisecondfreq = 440  # Hzwinsound.Beep(freq, duration)   # 完成后让电脑哔哔一声

以上两个步骤完成之后,就得到了一个店铺全年的销售数据明细,接下来可以用excel透视表或者tableau或者直接用python进行数据分析了。

以上两个步骤完成之后,就得到了一个店铺全年的销售数据明细,接下来可以用excel透视表或者tableau或者直接用python进行数据分析了。

很多时候写脚本解决问题,方式有很多,不一定要追求代码的完美,能快速解决问题就好了!

使用python批量下载天猫数据并进行合并(非爬虫)相关推荐

  1. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...

    接上文,由于NASA官方弃用了FTP改用HTTPS服务,所以关于MODIS数据的下载方式有所改变.完整系列博客可以参照以下链接.本篇主要接着上一篇没有讲完的应用密钥的脚本下载介绍. 1 官方教程与说明 ...

  2. 用python批量下载modis数据的速度怎么样_批量下载MODIS数据

    首先呢,说明一下,这个专栏主要记录一点IDL处理数据的一些小.因为自己学的是遥感,IDL初步在学,平时会写一点小程序处理一些数据.所以就想分享一下. 需要的软件 IDL和IDM IDM下载链接:htt ...

  3. python 批量下载 GPM 数据

    前期准备: 我是从 GES DISC 下载GPM数据,首先是注册账号,这个就不用说了.然后,注意按说明获取授权,这个教程很详细啦,不再过多介绍. 下载过程: 1. 手动下载 list of links ...

  4. Python批量下载电子邮件附件并汇总合并Excel文件

    前几天在公众号搞了一波送书活动,详见福利:免费赠送240本Python教材,该文推送之后,立刻收到了大量的样书申请表,那么接下来的工作就是下载这些邮件附件并汇总信息准备邮寄.对于这样重复性很强且没有太 ...

  5. python批量下载modis数据(可筛选日期、范围、数据类型)

    找了一圈下modis数据的,有的不能空间筛选有的不能下初级产品(也可能没找到),不甚满意,自己搞了个 23年2月3日更新,原文章里获取所有a标签的地址这一步可以替换为更新章节里直接通过接口获取了. 更 ...

  6. Python批量下载电子邮件附件并汇总合并Excel文件_如何让繁琐工作自动化:聊聊Python与RPA...

    RPA,是Robotic Process Automation的英文缩写,中文是机器人流程自动化,利用软件将重复性的工作自动化.基本目标是让人从重复性强的繁琐工作中解放出来去做更有意义更具创造性的工作 ...

  7. python 批量下载网页图片_Python 实现简单的爬虫功能 -----批量下载网页中的图片...

    我使用的是macPro , mac 自带了python2.7 , 我自己下载了pytho3.6根据操作进行安装后,终端默认的还是 python 2.7, 需要修改为 Python3.6 进入 ~/.b ...

  8. 关于批量下载MODIS数据的坑

    关于批量下载MODIS数据的坑与正确姿势 1. 第一个坑 1.1 Ladsweb的坑 由于之前做项目的时候去Ladsweb官网下载数据的时候还好好的,于是经过被批评改正之后回来就信心满满地去Ladsw ...

  9. python自动下载邮件附件_Python批量下载电子邮件附件并汇总合并Excel文件

    原标题:Python批量下载电子邮件附件并汇总合并Excel文件 前几天在公众号搞了一波送书活动,详见福利:免费赠送240本Python教材,该文推送之后,立刻收到了大量的样书申请表,那么接下来的工作 ...

最新文章

  1. (资源)OpenStack IRC资源
  2. python vars()的用法
  3. mycat和MySQL版本兼容_mycat下mysql jdbc connector使用高版本报PacketTooBigException异常
  4. 使用Spring Boot开发Web项目
  5. ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题
  6. 喜大普奔,VS Code 开启远程开发新时代!
  7. 《统一沟通-微软-实战》-6-部署-1-前端服务器-3-拓扑设计
  8. SqlDataReader循环取值
  9. mysql pt_mysql管理工具之pt
  10. CentOS镜像中替换安装镜像的小系统的内核方法
  11. 阿玛尼搜索引擎收录_被全网黑的阿玛尼权利,我一个大干皮咋用的挺好?
  12. Unity+罗技G29方向盘+Realistic Car Controller 制作简单的模拟驾驶
  13. SBUS2 协议初探
  14. Windows下安装X710网卡驱动
  15. 阿根廷探戈----中英文对照
  16. u盘打不开,提示需要格式化怎么办?
  17. 深眸分享——一文看懂倍频器的原理及其应用
  18. C#获取电脑MAC地址(物理地址)的几种方法
  19. 赠书 002丨文化改变脑,是玄学?
  20. pandas强大的Python数据分析工具

热门文章

  1. Qt Excel操作
  2. HOJ 2550 百步穿杨
  3. SEO工作,不要三人成虎!
  4. python星座分析
  5. (设计模式) (李建忠 C++) 23种设计模式
  6. atom可以做php开发吗,atomcode 一个相当牛B的PHP开发框架,可以到网上去搜索文档,就不帖在这儿了 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  7. RT-Thread在16届智能车竞赛双车接力组中的应用
  8. 在win7系统中设置共享,但是必须要关闭防火墙
  9. python 隐函数作图(原创简单方法)
  10. Android 安全机制