在移动应用开发、安全测试或批量部署场景中,我们常常需要从第三方安卓应用市场批量获取 APK 安装包。本文将演示如何使用 Python 编写一个轻量级爬虫,自动从类似“游戏巴士”这样的免费软件下载站提取 APK 下载链接,并完成自动化下载保存。
注意:本文仅用于技术学习与合法用途,请遵守目标网站的
robots.txt协议及法律法规,切勿用于商业盗版或侵犯知识产权行为。
该站提供大量免费安卓应用的 APK 直链下载。每个软件详情页(如/download/xxx.html)通常包含一个或多个下载按钮,其中“普通下载”链接往往指向真实的 APK 文件 URL。
requests:发送 HTTP 请求BeautifulSoup:解析 HTML 提取链接urllib.parse:处理 URLos / pathlib:管理本地文件路径import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
import time
# 配置项
BASE_URL = "https://www.youxibashi.cn/"
DOWNLOAD_DIR = "apks"
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"
}
# 创建下载目录
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
def extract_apk_link(page_url):
"""
从游戏巴士的软件详情页提取 APK 下载链接
示例页面:
- https://www.youxibashi.cn/download/9727.html (乐学喵)
- https://www.youxibashi.cn/download/3082.html (奥北体能)
- https://www.youxibashi.cn/download/654.html (护眼大师)
"""
try:
resp = requests.get(page_url, headers=HEADERS, timeout=10)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, 'html.parser')
# 查找包含 "APK下载" 的 <a> 标签(普通下载)
download_link = soup.find('a', string=lambda text: text and 'APK下载' in text)
if download_link and download_link.get('href'):
apk_url = urljoin(BASE_URL, download_link['href'])
return apk_url
else:
print(f"[!] 未在 {page_url} 找到 APK 下载链接")
return None
except Exception as e:
print(f"[ERROR] 解析 {page_url} 失败: {e}")
return None
def download_apk(apk_url, save_dir):
"""下载 APK 并保存"""
try:
resp = requests.get(apk_url, headers=HEADERS, stream=True, timeout=30)
resp.raise_for_status()
# 从 URL 中提取文件名
filename = os.path.basename(urlparse(apk_url).path)
if not filename.endswith('.apk'):
filename += '.apk'
filepath = os.path.join(save_dir, filename)
with open(filepath, 'wb') as f:
for chunk in resp.iter_content(chunk_size=8192):
f.write(chunk)
print(f"[✓] 已保存: {filepath}")
except Exception as e:
print(f"[ERROR] 下载失败 {apk_url}: {e}")
def main():
# 待爬取的软件详情页列表(可扩展)
target_pages = [
"https://www.youxibashi.cn/download/9727.html", # 乐学喵 - MBA备考平台
"https://www.youxibashi.cn/download/3082.html", # 奥北体能 - 校园体测助手
"https://www.youxibashi.cn/download/654.html", # 护眼大师 - 蓝光过滤工具
]
for page in target_pages:
print(f"\n[+] 正在处理: {page}")
apk_link = extract_apk_link(page)
if apk_link:
print(f" → 发现 APK 链接: {apk_link}")
download_apk(apk_link, DOWNLOAD_DIR)
else:
print(" → 跳过")
time.sleep(1) # 礼貌性延迟
print(f"\n[INFO] 所有任务完成!APK 保存至: ./{DOWNLOAD_DIR}/")
if __name__ == "__main__":
main()./apks/ 目录下。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。