`
raphael10241024
  • 浏览: 13858 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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个一次放到线程池中运行,最后保存结果
Python实现的淘宝直通车数据抓取(1)
Python实现的淘宝直通车数据抓取(2)
Python实现的淘宝直通车数据抓取(3)
Python实现的淘宝直通车数据抓取(4) 
1
4
分享到:
评论

相关推荐

    基于python实现的民宿房源数据抓取以及可视化分析项目源码(高分项目).zip

    基于python实现的民宿房源数据抓取以及可视化分析项目源码(高分项目).zip 已获老师指导并通过的高分毕业设计项目,也可作为期末大作业和课程设计,纯手打高分项目,小白实战没难度。 基于python实现的民宿房源...

    Python-淘宝天猫商品数据抓取代码和exe都在里面

    【Python-淘宝天猫商品数据抓取代码和exe都在里面】 这个资源主要涵盖了使用Python进行网络爬虫技术,特别是针对淘宝和天猫平台的商品数据抓取。Python作为一种强大的编程语言,因其简洁明了的语法和丰富的库支持,...

    Python爬虫技术的网页数据抓取与分析.pdf

    "Python爬虫技术的网页数据抓取与分析" 在信息化时代,互联网信息量呈现爆发式的增长,如何在诸多复杂的信息中简单快捷的寻找到有效信息,网络爬虫的诞生能够有效的解决此类问题,改善了信息检索的现状。本文通过...

    基于python实现的牛客网面经数据抓取源码(课程作业).zip

    基于python实现的牛客网面经数据抓取源码(课程作业).zip基于python实现的牛客网面经数据抓取源码(课程作业).zip基于python实现的牛客网面经数据抓取源码(课程作业).zip基于python实现的牛客网面经数据抓取源码...

    基于Python的51-job数据抓取程序设计.pdf

    综上所述,文章介绍了基于Python的51-job数据抓取程序的设计与实现过程,强调了Python在数据抓取领域的应用优势,并通过实验验证了程序的效率和实用性。该程序不仅能够帮助用户快速获取职位信息,还为后续的数据分析...

    python淘宝美食数据抓取

    淘宝美食抓取 存储到Mongodb和txt文件中 服务器端:通过web服务器的配置来指定编码参数,为所有text/html类型的文档指定带有正确编码信息的Content-Type头信息。例如Content-Type: text/html;charset=UTF-8 ...

    基于Python的淘宝天猫商品数据抓取及可视化设计源码

    本项目为淘宝天猫商品数据抓取及可视化设计源码,主要使用Python编写,辅以CSS、JavaScript和HTML等技术。项目包含677个文件,涵盖522个pyc文件、58个dll文件、29个py文件、19个pyd文件、10个exe文件、6个json文件、...

    课设项目基于python实现的美团酒店评论抓取和情感分析源码+项目说明(jupter notebook运行).zip

    课设项目基于python实现的美团酒店评论抓取和情感分析源码+项目说明(jupter notebook运行).zip课设项目基于python实现的美团酒店评论抓取和情感分析源码+项目说明(jupter notebook运行).zip课设项目基于python实现的...

    基于Python实现豆瓣电影TOP250抓取,然后对爬取的数据进行分析

    【作品名称】:基于Python实现豆瓣电影TOP250抓取,然后对爬取的数据进行分析 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目...

    python爬虫,如何抓取网页数据

    python爬虫,如何抓取网页数据; python爬虫,如何抓取网页数据; python爬虫,如何抓取网页数据; python爬虫,如何抓取网页数据; python爬虫,如何抓取网页数据; python爬虫,如何抓取网页数据; python爬虫,...

    直通车 ztc_h python 源码

    获取淘宝直通车接口加密参数_h的值,跟随直通车后台不定时更新。(下载之后解压缩,python源码和js文件都在里面,运行py文件即可。如果遇到问题可以私聊我解决

    python抓取淘宝天猫网页商品详情Demo

    在这个"python抓取淘宝天猫网页商品详情Demo"中,我们将探讨如何利用Python进行网页抓取,特别是针对淘宝和天猫的商品详情页面。 首先,我们需要理解网页抓取的基本原理。网页抓取,也称为网络爬虫,是通过模拟...

    Python网页数据抓取以及表格的制作

    首先,网页数据抓取是通过Python中的库如BeautifulSoup或Scrapy来实现的。BeautifulSoup库允许我们解析HTML和XML文档,通过选择器定位到特定的数据节点,提取所需信息。例如,在`anadata.py`和`anadata2.py`中可能...

    基于Python实现的携程机票数据爬取源码

    项目概述:本项目采用Python语言开发,旨在实现对携程机票数据的爬取。整个项目由多个模块组成,包括...简单描述:本项目基于Python爬虫技术,针对携程机票数据进行高效抓取与处理,实现了数据整合与利用的前期工作。

    Python车牌识别、车牌抓取源代码

    Python车牌识别、车牌抓取源程序,运行程序前需先导入cv2和numpy包。

    基于Python的ECommerceCrawlers电子商务数据抓取设计源码

    该项目是一款基于Python开发的电子商务数据抓取系统源码,包含380个文件,涵盖128个Python脚本、75个GIF图片、41个Markdown文档、27个JavaScript文件、22个CSV文件、18个JSON文件、18个HTML文件、10个TXT文件、10个...

    01-Python爬虫工程师-App数据抓取

    Python爬虫工程师-App数据抓取思维导图,便捷整理思路,目标、对项目、公司、个人的意义、爬虫工程师技术储备

    python爬虫项目——自动批量抓取m3u8网页视频

    Python爬虫技术在IT行业中广泛应用于数据挖掘和自动化任务,特别是在网络视频资源的获取上。本项目专注于自动批量抓取m3u8网页视频,这是一个非常实用的技能,特别是对于那些需要收集网络视频数据的人来说。m3u8是一...

    Python数据抓取技术与实战.pdf

    由于提供的文件信息中并没有具体的Python数据抓取技术与实战内容,我无法生成具体的技术知识点。但是,我可以根据标题“Python数据抓取技术与实战.pdf”来构建一些关于Python数据抓取的基础知识点和实战技巧。 知识...

    python 淘宝爬虫示例源码(抓取天猫数据).zip

    在本压缩包中,我们拥有一个使用Python编程语言编写的淘宝爬虫示例,特别针对天猫平台的数据抓取。Python是一种流行的高级编程语言,尤其在数据处理和网络爬虫领域广泛应用。下面将详细介绍这个示例源码涉及的核心...

Global site tag (gtag.js) - Google Analytics