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 를 대량으로 다운로드 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.