日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

mfc怎么获取进程的线程数_Python多线程获取小米应用商店App,看看我是怎么做到的

發布時間:2023/12/3 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mfc怎么获取进程的线程数_Python多线程获取小米应用商店App,看看我是怎么做到的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、【項目背景】

小米應用商店給用戶發現最好的安卓應用和游戲,安全可靠,可是要下載東西要一個一個的搜索太麻煩了。而且速度并不是很快。

今天小編就教大家利用多線程爬取小米應用商店的游戲模塊,快速獲取我們想要的軟件安裝包。

二、【項目目標】

目標 :應用分類 - 聊天社交 應用名稱, 應用鏈接,顯示在控制臺供用戶下載。

三、【涉及的庫和網站】

1、網址:百度搜 - 小米應用商店,進入官網。

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

3、軟件:PyCharm

四、【項目分析】

1、確認是否為動態加載。

通過頁面局部刷新, 右鍵查看網頁源代碼,搜索關鍵字未搜到 。斷定此網站為動態加載網站,需要抓取網絡數據包分析。

2、使用chrome瀏覽器,F12抓取網絡數據包。

1.1、抓取返回json數據的URL地址(Headers中的Request URL)。

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

1.2、查看并分析查詢參數(headers中的Query String Parameters)。

page: 1categoryId: 2pageSize: 30

發現只有page再變,0 1 2 3 ... ... ,這樣我們就可以通過控制page的直拼接多個返回json數據的URL地址。

五、【項目實施】

1、我們定義一個class類繼承object,然后定義init方法繼承self,再定義一個主函數main繼承self。準備導入庫,url地址和請求頭headers。

import requestsfrom threading import Threadfrom queue import Queueimport jsonimport timeclass 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): passif __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、運行程序。點擊運行,將游戲名稱,下載鏈接,執行時間,顯示在控制臺。

2、點擊藍色的網址可以直接去到下載頁面下載應用,如下圖所示。

七、【最后總結】

1、不建議抓取太多數據,容易對服務器造成負載,淺嘗輒止即可。

2、Python多線程優點。使用線程可以把占據長時間的程序中的任務放到后臺去處,程序的運行速度可能加快。

3、單線程可以被搶占(中斷),而已多線程就有了更多的選擇。而已在其他線程正在運行時,線程可以暫時擱置(也稱為睡眠)。可以釋放一些珍貴的資源如內存占用。

4、大家也可以嘗試在爬取其他分類,按照操作步驟,自己嘗試去做。自己實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

源碼獲取私信小編01

總結

以上是生活随笔為你收集整理的mfc怎么获取进程的线程数_Python多线程获取小米应用商店App,看看我是怎么做到的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。