Python爬虫过程解析之多线程获取小米应用商店数据


Posted in Python onNovember 14, 2020

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于IT共享之家 ,作者IT共享者

前言

小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个地搜索太麻烦了。而且速度不是很快。

今天用多线程爬取小米应用商店的游戏模块。快速获取。

Python爬虫过程解析之多线程获取小米应用商店数据

二、项目目标

目标 :应用分类 - 聊天社交 应用名称, 应用链接,显示在控制台供用户下载。

三、涉及的库和网站

1、网址:百度搜 - 小米应用商店,进入官网。

2、涉及的库:requests、threading 、queue 、json、time

3、软件:PyCharm

四、项目分析

1、确认是否为动态加载。

通过页面局部刷新, 右键查看网页源代码,搜索关键字未搜到 。断定此网站为动态加载网站,需要抓取网络数据包分析。

2、使用chrome浏览器,F12抓取网络数据包。

1)抓取返回json数据的URL地址(Headers中的Request URL)。

http://app.mi.com/categotyAllListApi?page={}&categoryId=2&pageSize=30

2)查看并分析查询参数(headers中的Query String Parameters)。

page: 1
categoryId: 2
pageSize: 30

发现只有page再变,0 1 2 3 ... ... ,这样我们就可以通过控制page的直拼接多个返回json数据的URL地址。

五、项目实施

1、我们定义一个class类继承object,然后定义init方法继承self,再定义一个主函数main继承self。准备导入库,url地址和请求头headers。

import requests
from threading import Thread
from queue import Queue
import json
import time
class XiaomiSpider(object):
def __init__(self):
   self.headers = {'User-Agent':'Mozilla/5.0'}
   self.url = 'http://app.mi.com/categotyAllListApi?page={}&categoryId=15&pageSize=30'
def main(self):
pass
if __name__ == '__main__':
  imageSpider = XiaomiSpider()
  imageSpider.main()

2、定义队列,用来存放URL地址

self.url_queue = Queue()

3、URL入队列

def url_in(self):
# 拼接多个URL地址,然后put()到队列中
for i in range(67):
self.url.format((str(i)))
self.url_queue.put(self.url)

4、定义线程事件函数get_page(请求数据)

defget_page(self):
# 先get()URL地址,发请求
while True:
# 当队列不为空时,获取url地址
if not self.url_queue.empty():
      url = self.url_queue.get()
      html = requests.get(url,headers=self.headers).text
self.parse_page(html)
else:
break

5、定义函数parse_page 解析json模块,提取应用名称,应用链接内容。

# 解析函数
def parse_page(self,html):
  app_json = json.loads(html)
for app in app_json['data']:
# 应用名称
    name = app['displayName']
# 应用链接
    link = 'http://app.mi.com/details?id={}'.format(app['packageName'])
    d = { '名称' : name,'链接' : link }
    print(d)

6、main方法, 定义t_list = [] 存放所有线程的列表。调用get_page多线程爬取。

def main(self):
self.url_in()
# 存放所有线程的列表
  t_list = []
for i in range(10): 
    t = Thread(target=self.get_page)
    t.start() 
    t_list.append(t)

7、for循环遍历列表,统一回收线程。

# 统一回收线程for p in t_list:   p.join()

8、统计一下执行时间。

start = time.time()
spider = XiaomiSpider()
spider.main()
end = time.time()
print('执行时间:%.2f' % (end-start))

六、效果展示

1、运行程序。点击运行,将游戏名称,下载链接,执行时间,显示在控制台。

Python爬虫过程解析之多线程获取小米应用商店数据

2、点击蓝色的网址可以直接去到下载页面下载应用,如下图所示。

Python爬虫过程解析之多线程获取小米应用商店数据

到此这篇关于Python爬虫过程解析之多线程获取小米应用商店数据的文章就介绍到这了,更多相关Python多线程获取小米应用商店数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 文件重命名工具代码
Jul 26 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
python字符串,数值计算
Oct 05 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
scrapy爬虫完整实例
Jan 25 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
parser.add_argument中的action使用
Apr 20 Python
Python列表推导式实现代码实例
Sep 09 Python
python实现自动化群控的步骤
Apr 11 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 #Python
Python join()函数原理及使用方法
Nov 14 #Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 #Python
利用python 下载bilibili视频
Nov 13 #Python
详解python polyscope库的安装和例程
Nov 13 #Python
python中的测试框架
Nov 13 #Python
Python加载数据的5种不同方式(收藏)
Nov 13 #Python
You might like
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
PHP文件缓存类示例分享
2015/01/30 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
使用tensorflow实现线性svm
2018/09/07 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
python实现简单图片物体标注工具
2019/03/18 Python
python实现抖音点赞功能
2019/04/07 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
运动会通讯稿300字
2014/02/02 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
pytorch查看网络参数显存占用量等操作
2021/05/12 Python