溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python怎么對apk文件進行下載

發布時間:2020-12-29 16:17:48 來源:億速云 閱讀:333 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關使用python怎么對apk文件進行下載,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

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

# coding=utf-8

import os
import requests
import openpyxl

curdir = os.getcwd() # 獲取當前路徑current work directory
header = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'}

# 創建文件夾用于存放已經下載的apk
if not os.path.exists("downloaded_apk"):
 os.system("mkdir downloaded_apk")

# 逐行讀取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 # 獲取下載地址
 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-8

import os
import queue
import threading
import requests
import openpyxl

curdir = os.getcwd() #獲取當前路徑current work directory
header = {
'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:
    break


if __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文件進行下載,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女