商家那里给出的是一个有几千行的excel表,这里使用openpyxl来读取excel。

class read_write:    def __init__(self,token,cookiestr):        self.subway=subwayquery(token,cookiestr)        self.threadpool=threadpool.ThreadPool(32)        self.centeralignment=openpyxl.styles.Alignment(horizontal='center')        self.percentage_format=openpyxl.styles.numbers.FORMAT_PERCENTAGE_00        self.number00_format=openpyxl.styles.numbers.FORMAT_NUMBER_00        self.number_format=openpyxl.styles.numbers.FORMAT_NUMBER    def write_sheet(self,sheet,data,row,base):        cell1=sheet.cell(row=row,column=base+1)        cell1.value=float(data['impressionRate'])/10000        cell1.number_format=self.percentage_format        cell2=sheet.cell(row=row,column=base+2)        cell2.value=int(data['impression'])        cell2.number_format=self.number_format        cell3=sheet.cell(row=row,column=base+3)        cell3.value=int(data['click'])        cell3.number_format=self.number_format        cell4=sheet.cell(row=row,column=base+4)        cell4.value=float(data['ctr'])/10000        cell4.number_format=self.percentage_format        cell5=sheet.cell(row=row,column=base+5)        cell5.value=float(data['cvr'])/10000        cell5.number_format=self.percentage_format        cell6=sheet.cell(row=row,column=base+6)        cell6.value=float(data['avgPrice'])/100        cell6.number_format=self.number00_format        cell7=sheet.cell(row=row,column=base+7)        cell7.value=int(data['competition'])        cell7.number_format=self.number_format    def query_write(self,sheet,row):        keyword=sheet.cell(row=row,column=1).value        try:            parse1=self.subway.query(keyword,'1')            if(parse1!=False):                self.write_sheet(sheet,parse1['result'][0],row,4)                self.write_sheet(sheet,parse1['result'][1],row,11)        except Exception as e:#            print("%s,%d,%s,%s" % (keyword,row,e,parse1['result']))            pass        try:            parse2=self.subway.query(keyword,'2')            if(parse2!=False):                self.write_sheet(sheet,parse2['result'][0],row,18)                self.write_sheet(sheet,parse2['result'][1],row,25)        except Exception as e:#            print("%s,%d,%s,%s" % (keyword,row,e,parse2))            pass    def try_save(self,wb,filename):        try:            print('正在保存文件:'+filename)            wb.save(filename)        except  Exception as e:            wb.save(filename+'_copy')    def start(self):        files=os.listdir(os.getcwd()+'/work')        for filename in files:            print('正在读取文件:'+filename)            wb=load_workbook('work//'+filename)            sheets=wb.sheetnames            for sheetname in sheets:                print('正在读取表:'+sheetname)                sheet=wb[sheetname]                sheet.merge_cells('E1:K1')                sheet.merge_cells('L1:R1')                sheet.merge_cells('S1:Y1')                sheet.merge_cells('Z1:AF1')                alignment=openpyxl.styles.Alignment(horizontal='center')                sheet['E1'].value='淘宝站内'                sheet['L1'].value='淘宝站外'                sheet['S1'].value='计算机设备'                sheet['Z1'].value='移动设备'                sheet['E1'].alignment=sheet['Z1'].alignment=sheet['S1'].alignment=sheet['L1'].alignment=self.centeralignment                sheet['E2'].value=sheet['L2'].value=sheet['S2'].value=sheet['Z2']='展现占比'                sheet['F2'].value=sheet['M2'].value=sheet['T2'].value=sheet['AA2']='展现指数'                sheet['G2'].value=sheet['N2'].value=sheet['U2'].value=sheet['AB2']='点击指数'                sheet['H2'].value=sheet['O2'].value=sheet['V2'].value=sheet['AC2']='点击率'                sheet['I2'].value=sheet['P2'].value=sheet['W2'].value=sheet['AD2']='点击转化率'                sheet['J2'].value=sheet['Q2'].value=sheet['X2'].value=sheet['AE2']='市场均价'                sheet['K2'].value=sheet['R2'].value=sheet['Y2'].value=sheet['AF2']='竞争度'                max_row=sheet.max_row                for i in range(0,(max_row+2997)//3000):                    start=time.time()                    arguments=list()                    for row in range(3+i*3000,min(3002+i*3000,max_row)+1):                        arguments.append(([sheet,row],()))                    requests=threadpool.makeRequests(self.query_write,arguments)                    [self.threadpool.putRequest(req) for req in requests]                    self.threadpool.wait()                    end=time.time()                    print('第%d-%d行执行完毕,用时%.1f秒.'%(3+i*3000,min(3002+i*3000,max_row),(end-start)))            self.try_save(wb,filename)

原理就是读取excel表中第一列的关键词,然后开启一个线程池,将抓取任务每3000个一次放到线程池中运行,最后保存结果
[url=http://raphael10241024.iteye.com/blog/2285333]Python实现的淘宝直通车数据抓取(1)[/url]
[url=http://raphael10241024.iteye.com/blog/2285364]Python实现的淘宝直通车数据抓取(2)[/url]
[url=http://raphael10241024.iteye.com/blog/2286091]Python实现的淘宝直通车数据抓取(3)[/url]
[url=http://raphael10241024.iteye.com/blog/2286092]Python实现的淘宝直通车数据抓取(4)[/url]

Python实现的淘宝直通车数据抓取(3)相关推荐

  1. Python实现的淘宝直通车数据抓取(1)

    最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...

  2. python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(2)

    再看我们要抓取的数据,网页是这样的: 这里是我们要抓取的数据: 打开chrome的调试工具发现数据是通过一个Ajax请求来获取的: 这样的话,获取数据就太简单了,因为完全不需要去解析html页面,只需 ...

  3. [Python爬虫] 三、数据抓取之Requests HTTP 库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...

  4. [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  5. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  6. python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)

    最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...

  7. 用python进行分布式网页数据抓取(一)——设计

    这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取. 从来没有用过python,这次来尝一下鲜,感觉还行~ BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来 ...

  8. 用Python实现全国二手房数据抓取+地图展示

    最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格. [建议先点赞.再收藏] 一.思路❤️ 想要获取链家全国二手房的信息,首先我们 ...

  9. python爬虫之app数据抓取_Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

    1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...

最新文章

  1. Visual Studio 2017新版发布,极大提高开发效率丨附下载
  2. 任正非:中美领跑AI说法不合适、5G被炒作过热……
  3. MySQL中的视图操作
  4. 深度学习核心技术精讲100篇(三十七)-利用Contrastive Learning对抗数据噪声:对比学习在微博场景的实践
  5. mysql中OPTIMIZE TABLE的作用
  6. 2.4.安装spaCy
  7. Remoting and MSMQ 结合做的一个DEMO
  8. 【 CodeForces - 799A 】Carrot Cakes(模拟,细节,有坑)
  9. LeetCode篇之栈:155(常数时间复杂度内找最小栈)
  10. 《深入理解Spark:核心思想与源码分析》——1.3节阅读环境准备
  11. [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
  12. 关于websql语法
  13. ENVI5.4中Himawari-8数据处理(向日葵8号卫星H-8)
  14. G16C如何切换语言,怎样使用 WinCC (TIA 博途) 实现在 SIMATIC HMI 面板中语言切换功能?...
  15. uni-app开发和常规Vue开发
  16. JS判断数组是否包含某个元素
  17. 青年志愿者演讲稿合集15篇
  18. java微信录音arm转mp3_使用FFmpeg将微信录音 amr格式 转 MP3格式
  19. java中的消息队列
  20. 后疫情时代,企业办公的“新常态”

热门文章

  1. onkeyup、onkeydown和onkeypress的区别
  2. three.js用awsd控制旋转()
  3. 思岚科技接受央视专访 导航定位的核心在于传感器+算法
  4. JS带有惯性的拖拽,摩擦,甩动元素
  5. Bmp位图图片颜色替换
  6. 黑马的python培训怎么样_来黑马学习python一个月的经历
  7. C语言课程设计:小型电子词典
  8. selenium-webdriver(python) -- 鼠标事件
  9. 基于RGB的偏色检测(实用)
  10. 电脑上怎么进行抠图?这个方法就很简单