Python实现的淘宝直通车数据抓取(3)
商家那里给出的是一个有几千行的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)相关推荐
- Python实现的淘宝直通车数据抓取(1)
最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...
- python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(2)
再看我们要抓取的数据,网页是这样的: 这里是我们要抓取的数据: 打开chrome的调试工具发现数据是通过一个Ajax请求来获取的: 这样的话,获取数据就太简单了,因为完全不需要去解析html页面,只需 ...
- [Python爬虫] 三、数据抓取之Requests HTTP 库
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...
- [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
- python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)
最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序. 首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码.查 ...
- 用python进行分布式网页数据抓取(一)——设计
这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取. 从来没有用过python,这次来尝一下鲜,感觉还行~ BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来 ...
- 用Python实现全国二手房数据抓取+地图展示
最近各种政策的出台,导致二手房的价格波动巨大,本文二哥来带领大家通过链家二手房为例,简单分析一下全国多个地区的二手房价格. [建议先点赞.再收藏] 一.思路❤️ 想要获取链家全国二手房的信息,首先我们 ...
- python爬虫之app数据抓取_Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...
最新文章
- 【面试系列】6种单例模式(Singleton)实现方法比较
- 4.9---4.16总结
- 高糊视频秒变4K,速度比TecoGAN快了9倍!东南大学提出新的视频超分辨率系统
- Zabbix 监控Mysql数据库及主从数据库
- [javaEE] response实现图片下载
- 汇编中的DW:DW 定义一个字
- 【Python】详解Pandas与Lambda结合进行高效数据分析
- hibernate 标识符_Hibernate中的标识符
- 【渝粤教育】国家开放大学2018年秋季 0505-22T护理学基础 参考试题
- c/c++中const用法总结
- Arrays对数组,二分查找,冒泡排序
- LeetCode MySQL 550. 游戏玩法分析 IV
- 靠一平台构建核心指标系统,数据分析让业务运营效率提升90%
- 给出三个坐标点,求三角形周长。
- Swift 进阶 | 看得见的算法
- JAVA PDF 转 PNG
- LeetCode-86
- Linux CentOS6和CentOS7设置静态ip
- 各航空公司的网址和电话
- chrome浏览器缓存 from disk cache
热门文章
- 1376:信使(msner)(dijkstar)
- Ubuntu18.4安装vim报错解决
- 如何提取音频中的文字?音频文件如何转换成文字?
- zzulioj 1089: 阶乘的最高位
- C语言:凯撒密码的实现
- 软件开发工具下载、破解-程序员专享
- Redis 数据类型(String、List、Hash、set、Sorted set 数据类型)
- LSTD: A Low-Shot Transfer Detector for Object Detection论文理解
- 小白转行web前端碎碎念
- Font Helvetica, Times-Roman is not embedded - Latex字体未嵌入非典型解决方案