从小米应用商店爬取APK文件

该代码实在原有代码的基础上做了一些小改动。原有代码连接:https://blog.csdn.net/Crab0314/article/details/89887024

改动后完整代码:

# coding=utf-8
import urllib
import requests
import re
from bs4 import BeautifulSoup
import random
import timedef parser_apks(self, count=36):_root_url = "http://app.mi.com"  # 应用市场主页网址res_parser = {}# 设置爬取的页面,从第一页开始爬取,第一页爬完爬取第二页,以此类推page_num =1#设置最大页数while page_num <20:# 获取应用列表页面wbdata = requests.get("http://app.mi.com/catTopList/10?page=" + str(page_num)).textprint("开始爬取第" + str(page_num) + "页")# 解析应用列表页面内容soup = BeautifulSoup(wbdata, "html.parser")links = soup.find_all("a", href=re.compile("/details?"), class_="", alt="")for link in links:# 获取应用详情页面的链接detail_link = urllib.parse.urljoin(_root_url, str(link["href"]))package_name = detail_link.split("=")[1]download_page = requests.get(detail_link).text#解析应用详情页面soup1 = BeautifulSoup(download_page, "html.parser")download_link = soup1.find(class_="download")["href"]# print(download_link)#获取直接下载的链接download_url = urllib.parse.urljoin(_root_url, str(download_link))# 解析后会有重复的结果,通过判断去重if download_url not in res_parser.values():res_parser[package_name] = download_urlcount = count - 1if count == 0:breakpage_num = page_num + 1print("爬取apk数量为: " + str(len(res_parser)))return res_parseruser_agent_list = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 ""(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 ""(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 ""(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 ""(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 ""(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 ""(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 ""(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ""(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 ""(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 ""(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]def auto_down(url,filename):try:opener = urllib.request.build_opener()#opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]opener.addheaders = [('User-Agent',random.choice(user_agent_list))]urllib.request.install_opener(opener)urllib.request.urlretrieve(url,filename)except urllib.request.ContentTooShortError:print( 'Network conditions is not good.Reloading.')auto_down(url,filename)except urllib.error.HTTPError:print(str(urllib.error.HTTPError))except:auto_down(url,filename)print("sssssss oh ssssssss")def craw_apks(self, count=36, save_path="d:\\APK\\xiaomi\\10\\"):res_dic = parser_apks(count)for apk in res_dic.keys():print("正在下载应用: " + apk)time.sleep(2)auto_down(res_dic[apk], save_path + apk + ".apk")print("下载完成")if __name__ == "__main__":craw_apks(36)

**注:**如果遇到问题如:TypeError: 'NoneType' object is not subscriptable
解决办法:将while page_num <20:中的最大页数改小。

原始代码连接

从小米应用商店爬取APK文件相关推荐

  1. Python爬虫:用最普通的方法爬取ts文件并合成为mp4格式

    介绍: 在自学爬虫时,一开始就是爬取一些文字(比如小说之类的),再后来变成了图片,再后来变成了视频- 其中最简单的就是对文字的爬取了,从文字过渡到图片也只是多了几行代码而已,但是: 从图片过渡到视频就 ...

  2. python多线程爬取ts文件并合成mp4视频

    python多线程爬取ts文件并合成mp4视频 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python多线程爬取ts文件并合成mp4视频 前言 一.分析页面 ...

  3. 小米应用商店上传apk报图片格式错误,小米手机调试 DELETE_FAILED_INTERNAL_ERROR错误

    1.小米手机调试  DELETE_FAILED_INTERNAL_ERROR错误http://blog.csdn.net/submit66/article/details/60751730#comme ...

  4. python 抽取xml_python批量爬取xml文件

    2.需要下载的页面文件: 3.该页面需要登陆,然后批量下载共享漏洞文件,我们就通过cookie来实现. #!/usr/bin/env python # -*- coding: utf-8 -*- &q ...

  5. python自动搜索爬取下载文件-python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  6. python拼接大量ts文件_Python爬取.ts文件,合并为mp4

    目标:爬影视网站ts文件到本地,合并成mp4文件 下载ts文件 本着不重复造轮子的精神(好吧其实是我懒),想用迅雷批量下载爬取,但是迅雷提供的通配符过于简单无法构造URL,只能自己写脚本 如下: # ...

  7. 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战

    这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...

  8. 小米VR一体机开发及apk文件导入

    一:环境搭建 下载 Java JDK , Android SDK. Java下载地址及安装配置环境方法:https://blog.csdn.net/siwuxie095/article/details ...

  9. 小米应用商店上传APK包时提示签名不存在

    最近在做应用的大版本更新,更新之后应用支持的最低版本从安卓5.0提升到了安卓7.0.结果在上传到小米应用商店之后提示签名不存在.如下提示 当时看到之后一脸懵逼,我很确定是有签名的.最后经过一番搜索,才 ...

最新文章

  1. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载
  2. nginx反向代理部署与演示(二)
  3. Jmeter连接MySQL数据库
  4. bzoj1025 [SCOI2009]游戏 动态规划
  5. AntV中的饼状图中的花瓣图旁边的文字显示label怎样修改
  6. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
  7. 【转载】Android Animation 简介(官方文档翻译) ---- 翻译的很好!
  8. Quartz学习总结(1)——Spring集成Quartz框架
  9. vue 毫秒数转年月日_Vue将毫秒数转化为正常日期格式的实例_盂希_前端开发者
  10. html透明度_iMac下制作含透明度图片及判断图片透明度
  11. redis基础学习(一)— 配置项
  12. ElementUI:没有dist文件夹,vue项目打包后字体图标失效,变成小方框解决方案
  13. 【前端】相信你会用到的一篇笔记---HTML篇
  14. 华天OA漏洞复现手册
  15. LaTex---在图片或表格上方、下方添加字体
  16. 高效能人士的七个习惯 与成功有约
  17. 推荐一些python IDE(python编辑器)
  18. 求生之路寻找延迟服务器,求生之路2服务器tickrate的作用与网络参数的优化_3DM单机...
  19. 上周技术关注:Alexa开放搜索爬虫接口
  20. 怎么批量对多个视频文件进行消音处理

热门文章

  1. DELL Precision T7920加装显卡遇到的坑
  2. 将numeric转换为数据类型numeric时发生算术溢出错误
  3. 压测工具Jmeter下载及使用小解
  4. linux下达梦数据库导出dmp,DM7 达梦数据库 物理备份还原之 备份管理 操作手册
  5. Android 音视频开发(一):PCM 格式音频的播放与采集
  6. Echarts图表大小自适应浏览器窗口大小
  7. STM32 串口3 总是进入接收中断
  8. iOS的GCD、NSThread、NSOperation、锁、Runloop的介绍和使用
  9. 远程桌面连接后闪退的解决方法
  10. 数据挖掘案例——ReliefF和K-means算法的医学应用