最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

前言

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

今天用多線程爬取小米應(yīng)用商店的游戲模塊??焖佾@取。

二、項(xià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

四、項(xiàng)目分析

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地址。

五、項(xiàng)目實(shí)施

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、定義隊(duì)列,用來存放URL地址

self.url_queue = Queue()

3、URL入隊(duì)列

def url_in(self):
# 拼接多個URL地址,然后put()到隊(duì)列中
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)隊(duì)列不為空時(shí),獲取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)計(jì)一下執(zhí)行時(shí)間。

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

六、效果展示

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

2、點(diǎn)擊藍(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實(shí)現(xiàn)從N個數(shù)中找到最大的K個數(shù)

    Python實(shí)現(xiàn)從N個數(shù)中找到最大的K個數(shù)

    這篇文章主要介紹了Python實(shí)現(xiàn)從N個數(shù)中找到最大的K個數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python中np.where的用法

    python中np.where的用法

    np.where() 是 NumPy 庫中的一個函數(shù),用于根據(jù)條件從多個選擇中選擇元素,本文主要介紹了python中np.where的用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 在PyCharm導(dǎo)航區(qū)中打開多個Project的關(guān)閉方法

    在PyCharm導(dǎo)航區(qū)中打開多個Project的關(guān)閉方法

    今天小編就為大家分享一篇在PyCharm導(dǎo)航區(qū)中打開多個Project的關(guān)閉方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python使用turtle繪制國際象棋棋盤

    python使用turtle繪制國際象棋棋盤

    這篇文章主要為大家詳細(xì)介紹了python使用turtle畫國際象棋棋盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用PyInstaller庫把Python程序打包成exe

    使用PyInstaller庫把Python程序打包成exe

    這篇文章介紹了使用PyInstaller庫把Python程序打包成exe的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 如何基于pandas讀取csv后合并兩個股票

    如何基于pandas讀取csv后合并兩個股票

    這篇文章主要介紹了如何基于pandas讀取csv后合并兩個股票,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python中pywebview框架使用方法記錄

    python中pywebview框架使用方法記錄

    Pywebview是一個用于構(gòu)建網(wǎng)頁的Python庫,類似于Flask框架,但主要使用Python編寫而非HTML或JS,通過簡單的命令即可安裝和使用,支持創(chuàng)建自制或調(diào)用外部網(wǎng)頁界面,需要的朋友可以參考下
    2024-09-09
  • python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例

    python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例

    這篇文章主要介紹了python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python區(qū)塊鏈實(shí)現(xiàn)簡版工作量證明

    python區(qū)塊鏈實(shí)現(xiàn)簡版工作量證明

    這篇文章主要為大家介紹了python區(qū)塊鏈實(shí)現(xiàn)簡版工作量證明詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python&Matlab實(shí)現(xiàn)灰狼優(yōu)化算法的示例代碼

    Python&Matlab實(shí)現(xiàn)灰狼優(yōu)化算法的示例代碼

    灰狼優(yōu)化算法是一種群智能優(yōu)化算法,它的獨(dú)特之處在于一小部分擁有絕對話語權(quán)的灰狼帶領(lǐng)一群灰狼向獵物前進(jìn)。本文具體介紹了灰狼優(yōu)化算法的兩種實(shí)現(xiàn)示例代碼,需要的可以參考一下
    2022-03-03

最新評論

正宁县| 靖边县| 新巴尔虎右旗| 彰化县| 孝义市| 灌阳县| 佛坪县| 日照市| 公主岭市| 日照市| 贵定县| 什邡市| 濉溪县| 河北区| 万年县| 洪雅县| 陇西县| 太和县| 黎平县| 晋中市| 延吉市| 惠东县| 大化| 太谷县| 鄂伦春自治旗| 广元市| 亳州市| 绍兴市| 鄂州市| 始兴县| 焦作市| 平度市| 德惠市| 宝鸡市| 英德市| 长丰县| 司法| 庄河市| 海原县| 天柱县| 永吉县|