批量下载应用宝上的apk文件 - Python

本文内容来源于网络,仅供学习和交流使用,不具有任何商业用途,如有侵权或者其他问题,请即时与我联系,我会第一时间处理。---Python逐梦者。

如题:

 1 """
 2     下载应用宝上所有的apk文件
 3 """
 4 import os
 5 import random
 6 
 7 from selenium import webdriver
 8 import requests
 9 import parsel
10 
11 filePath = 'apkFiles\\'
12 
13 if not os.path.exists(filePath):
14     os.mkdir(filePath)
15 
16 # 请求头
17 headers = {
18     'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
19 }
20 url = 'https://sj.qxxq.com/myapp/category.htm?orgame=1' # 通过分析我们发现它是懒加载,调用selenium
21 
22 # 开始请求数据
23 response = requests.get(url=url, headers=headers)
24 # print(response.text)
25 # 选择器
26 selector = parsel.Selector(response.text)
27 # 开始选取应用列表
28 lis = selector.css('.main ul li')
29 print(len(lis)) # 只有前40个
30 # 开始读取名称和下载链接
31 for li in lis:
32     name = li.css('.app-info-desc a::text').get()
33     downLoadTime = li.css('.app-info-desc .download::text').get()
34     size = li.css('.app-info-desc .size::text').get()
35     downLoadUrl = li.css('.app-info-desc .com-install-btn::attr(ex_url)').get()
36     print(name, downLoadTime, size, downLoadUrl, sep='|')
37 
38     # 开始下载
39     res = requests.get(url=downLoadUrl, headers=headers)
40     time.sleep(random.randint(2, 10))
41     with open(filePath + name + '.apk', mode='wb') as f:
42         f.write(res.content)
43         print(name + '-----下载完毕!')

我没有下载完,部分截图如下:

 

页面是懒加载,尝试用selenium加载全部页面:

 1 """
 2     下载应用宝上所有的apk文件
 3 """
 4 import os
 5 import random
 6 import time
 7 from selenium import webdriver
 8 import requests
 9 
10 
11 # 文件夹
12 filePath = 'apkFiles\\'
13 if not os.path.exists(filePath):
14     os.mkdir(filePath)
15 
16 headers = {
17     'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
18 }
19 # 定义页面下滑函数
20 def dropDown():
21     for i in range(1, 10):
22         j = i / 9
23         js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f - 500' % j # 页面高度等于
24         time.sleep(random.randint(2, 5)) # 随机休眠
25         driver.execute_script(js)
26 
27 # 初始化浏览器
28 driver = webdriver.Chrome()
29 url = 'https://sj.qq.com/myapp/category.htm?orgame=1'
30 driver.get(url) # 请求页面
31 driver.implicitly_wait(10) # 全局等待10秒
32 driver.maximize_window() # 最大化窗口
33 dropDown() # 下滑
34 
35 # 获取列表
36 lis = driver.find_elements_by_css_selector('.main ul li')
37 print(lis, len(lis))
38 # 开始循环列表
39 for li in lis:
40     # name = li.find_element_by_css_selector('.app-info-desc a').text # 名称
41     name = li.find_element_by_css_selector('.app-info-desc .com-install-btn').get_attribute('appname') # 名称
42     size = li.find_element_by_css_selector('.app-info-desc .size').text # 大小
43     downLoadTime = li.find_element_by_css_selector('.app-info-desc .download').text # 下载次数
44     downLoadUrl = li.find_element_by_css_selector('.app-info-desc .com-install-btn').get_attribute('ex_url') # 下载链接
45     print(name, size, downLoadTime, downLoadUrl, sep='|')
46 
47     # 接下来用requests请求下载
48     response = requests.get(url=downLoadUrl, headers=headers)
49     time.sleep(random.randint(2, 5))
50     with open(filePath + name + '.apk', mode='wb') as f:
51         f.write(response.content)
52         print(name + '==================下载完成======================')

逐梦很累,坚持加油。 

posted @ 2021-11-08 20:53  、一叶孤城  阅读(358)  评论(0编辑  收藏  举报