python 으로 apk 대량 다운로드

사례 이야기:
전에 저희 가 안 드 로 이 드 핸드폰 테스트 를 했 을 때...
시장 부 는 우리 테스트 부 에서 탑 1000 app(상위 1000 app)의 호환성 테스트 를 진행 하 기 를 희망 합 니 다.
우리 의 휴대 전화 가 이렇게 많은 사용 하기 좋 은 앱 을 설치 하고 정상적으로 실행 할 수 있 도록
또한 시장 부 는 모 응용 시장 에서 top 1000 의 apk 다운로드 주 소 를 제공 했다.

어떻게 빠 른 대량 다운로드 apk 파일 을 실현 합 니까?
준비 단계
상기 excel 의 url 은 분명히 2 차 방향 을 바 꿔 야 합 니 다.왜냐하면 이것 은.apk 의 끝 링크 가 아니 기 때 문 입 니 다.
우 리 는 분석 을 한 후에 다시 방향 을 정 해 야 한다.wget 명령 은 이 url 재 설정 해석 을 지원 하지 않 기 때문에 사용 할 수 없습니다.
그래서 우 리 는 requests 모듈 을 사용 하여 다운 로드 를 실현 합 니 다.
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 대기 열 에 넣 고 먼저 나 갑 니 다.
그리고 대기 열 이 빈 대기 열 이 아니라면 대기 열 에서 퀘 스 트 를 가 져 옵 니 다(qjob),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 로 저장 합 니 다.1000 apk.py 를 데스크 톱 에 놓 고,
추천 python download1000 apk.py 가 실 행 됩 니 다.물론 더 블 클릭 으로 실 행 될 수도 있 습 니 다.
실행 효 과 는 다음 과 같 습 니 다:

이상 은 python 으로 apk 를 대량으로 다운로드 하 는 상세 한 내용 입 니 다.python 에서 apk 를 대량으로 다운로드 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기