欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬蟲過程解析之多線程獲取小米應(yīng)用商店數(shù)據(jù)

 更新時間:2020年11月14日 09:17:29   作者:松鼠愛出餅干  
這篇文章主要介紹了Python爬蟲過程解析之多線程獲取小米應(yīng)用商店數(shù)據(jù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文的文字及圖片來源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,如有問題請及時聯(lián)系我們以作處理。

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

前言

小米應(yīng)用商店給用戶發(fā)現(xiàn)最好的安卓應(yīng)用和游戲,安全可靠,可是要下載東西要一個一個地搜索太麻煩了。而且速度不是很快。

今天用多線程爬取小米應(yīng)用商店的游戲模塊。快速獲取。

二、項目目標(biāo)

目標(biāo) :應(yīng)用分類 - 聊天社交 應(yīng)用名稱, 應(yīng)用鏈接,顯示在控制臺供用戶下載。

三、涉及的庫和網(wǎng)站

1、網(wǎng)址:百度搜 - 小米應(yīng)用商店,進(jìn)入官網(wǎng)。

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

3、軟件:PyCharm

四、項目分析

1、確認(rèn)是否為動態(tài)加載。

通過頁面局部刷新, 右鍵查看網(wǎng)頁源代碼,搜索關(guān)鍵字未搜到 。斷定此網(wǎng)站為動態(tài)加載網(wǎng)站,需要抓取網(wǎng)絡(luò)數(shù)據(jù)包分析。

2、使用chrome瀏覽器,F(xiàn)12抓取網(wǎng)絡(luò)數(shù)據(jù)包。

1)抓取返回json數(shù)據(jù)的URL地址(Headers中的Request URL)。

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

2)查看并分析查詢參數(shù)(headers中的Query String Parameters)。

page: 1
categoryId: 2
pageSize: 30

發(fā)現(xiàn)只有page再變,0 1 2 3 ... ... ,這樣我們就可以通過控制page的直拼接多個返回json數(shù)據(jù)的URL地址。

五、項目實施

1、我們定義一個class類繼承object,然后定義init方法繼承self,再定義一個主函數(shù)main繼承self。準(zhǔn)備導(dǎo)入庫,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、定義線程事件函數(shù)get_page(請求數(shù)據(jù))

defget_page(self):
# 先get()URL地址,發(fā)請求
while True:
# 當(dāng)隊列不為空時,獲取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、定義函數(shù)parse_page 解析json模塊,提取應(yīng)用名稱,應(yīng)用鏈接內(nèi)容。

# 解析函數(shù)
def parse_page(self,html):
  app_json = json.loads(html)
for app in app_json['data']:
# 應(yīng)用名稱
    name = app['displayName']
# 應(yīng)用鏈接
    link = 'http://app.mi.com/details?id={}'.format(app['packageName'])
    d = { '名稱' : name,'鏈接' : link }
    print(d)

6、main方法, 定義t_list = [] 存放所有線程的列表。調(diào)用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循環(huán)遍歷列表,統(tǒng)一回收線程。

# 統(tǒng)一回收線程for p in t_list:   p.join()

8、統(tǒng)計一下執(zhí)行時間。

start = time.time()
spider = XiaomiSpider()
spider.main()
end = time.time()
print('執(zhí)行時間:%.2f' % (end-start))

六、效果展示

1、運(yùn)行程序。點擊運(yùn)行,將游戲名稱,下載鏈接,執(zhí)行時間,顯示在控制臺。

2、點擊藍(lán)色的網(wǎng)址可以直接去到下載頁面下載應(yīng)用,如下圖所示。

到此這篇關(guān)于Python爬蟲過程解析之多線程獲取小米應(yīng)用商店數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python多線程獲取小米應(yīng)用商店數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python對url格式解析的方法

    python對url格式解析的方法

    這篇文章主要介紹了python對url格式解析的方法,涉及Python針對URL解析的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python filecmp.dircmp實現(xiàn)遞歸比對兩個目錄的方法

    python filecmp.dircmp實現(xiàn)遞歸比對兩個目錄的方法

    這篇文章主要介紹了python filecmp.dircmp實現(xiàn)遞歸比對兩個目錄的方法,本文通過實例代碼給大家介紹的非常詳細(xì),大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python使用openpyxl復(fù)制整張sheet

    Python使用openpyxl復(fù)制整張sheet

    這篇文章主要介紹了Python使用openpyxl復(fù)制整張sheet,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python chardet庫識別編碼原理解析

    Python chardet庫識別編碼原理解析

    這篇文章主要介紹了python chardet庫識別編碼原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 一起來看看python的裝飾器代碼

    一起來看看python的裝飾器代碼

    這篇文章主要為大家詳細(xì)介紹了python裝飾器代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python?aeon庫進(jìn)行時間序列算法預(yù)測分類實例探索

    python?aeon庫進(jìn)行時間序列算法預(yù)測分類實例探索

    這篇文章主要介紹了python?aeon庫進(jìn)行時間序列算法預(yù)測分類實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • Python裝飾器(decorator)定義與用法詳解

    Python裝飾器(decorator)定義與用法詳解

    這篇文章主要介紹了Python裝飾器(decorator)定義與用法,結(jié)合具體實例形式詳細(xì)分析了Python裝飾器的概念、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • GELU激活函數(shù)算法

    GELU激活函數(shù)算法

    這篇文章主要為大家介紹了GELU激活函數(shù)算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python實現(xiàn)文件助手中查看微信撤回消息

    python實現(xiàn)文件助手中查看微信撤回消息

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)文件助手中查看微信撤回消息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • pyqt5對用qt designer設(shè)計的窗體實現(xiàn)彈出子窗口的示例

    pyqt5對用qt designer設(shè)計的窗體實現(xiàn)彈出子窗口的示例

    今天小編就為大家分享一篇pyqt5對用qt designer設(shè)計的窗體實現(xiàn)彈出子窗口的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評論