电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

用python批量下載apk

瀏覽:23日期:2022-07-01 08:41:10
案例故事:

之前我們做Android手機測試的時候,

市場部希望我們測試部進行Top 1000 app(排名前1000的app)的兼容性測試,以確保我們的手機是可以安裝并正常運行這么多好用的app,且市場部提供了某應用市場上的top 1000 的apk下載地址。

用python批量下載apk

如何實現快速批量地下載apk文件呢?

準備階段

以上excel里的的url分明是需要進行二次重定向的,因為其不是一個.apk結尾的鏈接,我們需要進行解析后再進行重定向。wget命令是不支持這url重定向解析的,所以不能采用。所以我們還是采用requests模塊來實現下載。

Python批處理腳本形式 單線程的寫法

記住批處理腳本的精髓:批量順序執行語句,由于批處理腳本形式只能實現單個apk的下載任務,我們使用requests模塊實現下載。單線程效率比較慢,必須等前一個apk下載完畢后,才會開始后一個apk的下載。

# coding=utf-8import osimport requestsimport openpyxlcurdir = os.getcwd() # 獲取當前路徑current work directoryheader = { ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36’}# 創建文件夾用于存放已經下載的apkif not os.path.exists('downloaded_apk'): os.system('mkdir downloaded_apk')# 逐行讀取excel里的下載地址urlexcel = openpyxl.load_workbook(’Top_1000_app.xlsx’) # 讀取excel里邊的內容table = excel.activerows = table.max_rowfor r in range(2, rows + 1): # 跟excel的第一行標題行無關,從第二行文字內容開始 apk_name = table.cell(row=r, column=2).value # 獲取app名字(中文) apk_url = table.cell(row=r, column=3).value # 獲取下載地址 save_path = os.path.join(curdir, 'downloaded_apk', '%s.apk' % apk_name) if not os.path.exists(save_path): # 避免二次下載 print('Downloading the %sth apk and will save to %s' % (r, save_path)) try: r = requests.get(apk_url, headers=header, allow_redirects=True, timeout=720) # 發起requests下載請求 status_code = r.status_code if (status_code == 200 or status_code == 206): with open(save_path, 'wb') as hf: hf.write(r.content) except: print('Error, can not download %s.apk' % apk_name) else: print('%s downloaded already!' % save_path)os.system('pause')Python面向對象類形式 多線程下載的寫法

準備階段

多線程一般效率快很多很多,多線程任務執行,一般是將apk下載任務放到Queue隊列里去,先進先出,然后只要隊列不是空隊列,就從隊列里邊取任務(q_job),并有10個線程同時進行,相對來說,理解上會較難一些些,但是掌握后,可以快速提高下載效率。

#coding=utf-8import osimport queueimport threadingimport requestsimport openpyxlcurdir = os.getcwd() #獲取當前路徑current work directoryheader = {’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36’}# 創建文件夾if not os.path.exists('downloaded_apk'): os.system('mkdir downloaded_apk')def download_single_apk(apk_url_str): ’’’下載單個apk文件’’’ apk_name, apk_url = apk_url_str.split(';') # print(apk_url) save_path = os.path.join(curdir, 'downloaded_apk', '%s.apk' % apk_name) if not os.path.exists(save_path): # 避免二次下載 print('Downloading %s' % (save_path)) try: r = requests.get(apk_url, headers=header, allow_redirects=True, timeout=720) # 發起requests下載請求 status_code = r.status_code if (status_code == 200 or status_code == 206): with open(save_path, 'wb') as hf: hf.write(r.content) except: print('Error, can not download %s.apk' % apk_name) else: print('%s downloaded already!' % save_path)# 批量下載的線程class DownLoadThread(threading.Thread): def __init__(self, q_job): self._q_job = q_job threading.Thread.__init__(self) def run(self): while True: if self._q_job.qsize() > 0: download_single_apk(self._q_job.get()) # 這是10個線程都運行這個下載函數 else: breakif __name__ == ’__main__’: # 初始化一個隊列 q = queue.Queue(0) # 逐行讀取excel里的url excel = openpyxl.load_workbook(’Top_1000_app.xlsx’) # 讀取excel里邊的內容 table = excel.active rows = table.max_row for r in range(2, rows + 1): # 跟excel的第一行標題行無關,從第二行文字內容開始做替換工作 apk_name = table.cell(row=r, column=2).value # 獲取app名字(中文) apk_url = table.cell(row=r, column=3).value # 獲取下載地址 temp_str = apk_name + ';' + apk_url # 不可以put列表進隊列,只能嘗試put字符串 q.put(temp_str) for i in range(10): # 開啟10個線程 DownLoadThread(q).start()本案例素材下載

點我下載

運行方式與效果

比如保存以上代碼為download_1000apk.py并放在桌面,建議python download_1000apk.py運行,當然也可以雙擊運行。運行效果如下:

用python批量下載apk

以上就是用python批量下載apk的詳細內容,更多關于python批量下載apk的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 广州网站建设_小程序开发_番禺网站建设_佛山网站建设_粤联网络 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 好看的韩国漫画_韩漫在线免费阅读-汗汗漫画 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 数控走心机-双主轴走心机厂家-南京建克 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 釜溪印象网络 - Powered by Discuz!| 高压包-点火器-高压发生器-点火变压器-江苏天网 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 洗地机-全自动/手推式洗地机-扫地车厂家_扬子清洁设备 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 |