<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 自動給抖音漂亮小姐姐視頻點(diǎn)贊!

          共 9904字,需瀏覽 20分鐘

           ·

          2021-03-26 08:30


          公眾號關(guān)注杰哥的IT之旅”,

          選擇“星標(biāo)”,重磅干貨,第一時間送達(dá)!


          先來看看這只爬蟲做了些什么事兒呢?

          1、通過 ADB 控制你的手機(jī),幫你自動刷抖音
          2、調(diào)用百度人臉識別的接口,給視頻畫面中出現(xiàn)的小姐姐打分
          3、自動給顏值 70 以上的小姐姐的視頻點(diǎn)贊

          有趣的是,根據(jù)抖音的推薦算法,連著刷幾天之后,抖音里給你推薦的全是漂亮小姐姐了。

          成果展示

          先演示一下效果。

          連接手機(jī)(手機(jī)要允許ADB調(diào)試),運(yùn)行爬蟲程序,程序會自動打開抖音APP,自動尋找漂亮的小姐姐啦。

          有趣的是,根據(jù)抖音的推薦算法,連著刷幾天之后,抖音里給你推薦的全是漂亮小姐姐了。剛開始刷的時候,可能幾十條里都沒有一個漂亮小姐姐,而刷幾天之后,基本上刷到的每條視頻里都是漂亮小姐姐。看,這是我刷了三天的 “成果”, 斷斷續(xù)續(xù)刷了三天時間,已經(jīng) “點(diǎn)贊” 了兩百多條漂亮小姐姐的視頻。

          咱有一說一啊,先不管是不是因?yàn)槎兑舻拿李仦V鏡功能強(qiáng)大,單純從爬蟲爬到的視頻來看,這些小姐姐是真的好看,結(jié)果還是令人滿意的。

          下面這個是抖音里檢測到漂亮小姐姐的截圖畫面,本來這是作為臨時文件,人臉檢測完即刪除的,我看著好看,就給留了下來。

          這個爬蟲程序大概就是這樣,下面詳細(xì)講解一下,這個爬蟲是怎么做出來的。

          1、基礎(chǔ)準(zhǔn)備 這個爬蟲需要用到三個東西。Python 環(huán)境,爬蟲程序是用 Python 寫的,肯定要先配置好 Python 的環(huán)境啊。沒有配好的自行去安裝一下 Anaconda。

          此外,還需要安裝一些必要的庫,如 requests,urllib,PIL等。ADB 環(huán)境,我們的爬蟲需要通過 ADB 命令對手機(jī)進(jìn)行操作,實(shí)現(xiàn)自動刷抖音,自動點(diǎn)贊的功能。安裝方法自行百度。

          人臉識別API,我這里用的是百度AI的人臉識別接口,大家需要自行注冊一個百度AI 開放平臺的賬號,然后創(chuàng)建一個人臉識別的應(yīng)用,然后將 appid,api_key,secret_key 三個參數(shù)填到爬蟲代碼這兒即可。

          這里簡單對 ADB 介紹一下。

          ADB 的全稱為 Android Debug Bridge,就是起到了調(diào)試橋的作用,用這個可以很方便地對安卓應(yīng)用進(jìn)行調(diào)試。

          簡單點(diǎn)說,就是你可以用這個工具來操作你的手機(jī),它可以完成你在手機(jī)上能做的任何操作。

          比如說安裝/卸載/打開/關(guān)閉手機(jī)APP,滑動屏幕,點(diǎn)擊,長按等等。更復(fù)雜的操作也能做,我們這里就不講了,因?yàn)槲覀兊倪@個抖音爬蟲用到的 ADB 指令基本也就這些了。a. ADB 啟動應(yīng)用 只需要知道應(yīng)用的 package_name 和 activity_name,然后調(diào)用下面的 adb 指令,即可打開相應(yīng)的應(yīng)用

          adb shell am start -n [package_name] [activity_name]

          以抖音 APP 為例,它的 package_name 和 activity_name 如下。

          # 抖音App的應(yīng)用包名和初始Activity
          package_name = 'com.ss.android.ugc.aweme'
          activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'```

          所以在命令行中運(yùn)行下面的指令,即可打開手機(jī)中的抖音APP。

          adb shell am start -n com.ss.android.ugc.aweme com.ss.android.ugc.aweme.splash.SplashActivity```

          b. ADB 點(diǎn)擊屏幕

          在命令行中運(yùn)行下面指令,即可實(shí)現(xiàn)手機(jī)屏幕的點(diǎn)擊。其中 1330 1750 是點(diǎn)擊的 x y坐標(biāo)。

          adb shell input tap 1330 1750```

          以此爬蟲里的抖音點(diǎn)贊為例,我只需要記錄下抖音app中,點(diǎn)贊按鈕對應(yīng)的屏幕坐標(biāo),然后調(diào)用這句指令,即可完成自動點(diǎn)贊。

          c. ADB 滑動屏幕

          在命令行中運(yùn)行下面指令,實(shí)現(xiàn)的是手機(jī)屏幕的滑動操作。其中有 5 個參數(shù)。這五個數(shù)字分別表示的是,滑動起始點(diǎn)的 x y 坐標(biāo),滑動終止點(diǎn)的 x y 坐標(biāo),滑動時長。

          adb shell input swipe 900 1400 400 1400 100```

          比如上面這句指令表示的就是,從坐標(biāo)(900,1400)的點(diǎn),滑動到坐標(biāo) (400,1400)的點(diǎn),滑動過程 100 毫秒。

          其實(shí),這句指令稍微改一改,把起始坐標(biāo)和終止坐標(biāo)設(shè)為一致,滑動時長設(shè)長一些,滑動操作就變成了 “長按屏幕” 操作了。

          基本準(zhǔn)備工作也差不多就這些了,下面講一下爬蟲程序的整體思路吧。

          爬蟲整體思路

          如圖所示,爬蟲的整個爬取思路如下。

          首先啟動抖音 APP,等第一個視頻加載出來播放之后,截取屏幕畫面,調(diào)用百度 AI 的人臉識別接口進(jìn)行人臉檢測和評分。

          如果畫面中檢測到顏值評分70分以上,且性別為女的人臉,則點(diǎn)擊屏幕中的”點(diǎn)贊“按鈕,然后上滑播放下一條視頻

          如果畫面中中沒有出現(xiàn)人臉,或者性別為男,或者顏值不足70,則繼續(xù)截圖檢測,直到視頻播放結(jié)束,或者找到滿足條件的人臉為止,然后上滑播放下一條視頻。為了盡可能地不錯過有漂亮小姐姐的抖音,每條視頻中會截取 4 - 5 張圖片進(jìn)行檢測,只要有一張截圖中有高顏值的小姐姐,那么我們就對這個視頻進(jìn)行點(diǎn)贊。如果這樣都檢測不出來,只能說小姐姐藏得太深,或者漂亮的不夠明顯了

          大概思路就是這樣,下面我們就來動手完成爬蟲吧

          動手?jǐn)]碼寫爬蟲

          由于爬蟲還是稍微有點(diǎn)大,所以我拆成三個部分來寫。

          人臉識別部分,ADB 控制部分,和爬蟲主邏輯部分。

          (1)人臉識別部分

          這部分用了調(diào)用了 百度AI 的人臉識別接口,需要將你自己申請的 appid,api_key,secret_key 三個參數(shù)填到代碼里。

          import base64
          import urllib
          import json
          import requests
          import sys

          appid = '填寫你申請的 appid'
          api_key = '填寫你申請的 api_key'
          secret_key = '填寫你申請的 secret_key'
          這部分的代碼主要包括四個函數(shù),包括

          (2)ADB 控制部分

          ADB 控制部分,大概思路就是通過python中的 os 庫執(zhí)行 adb 指令,來對手機(jī)進(jìn)行操作。

          主要包括四個函數(shù):

          start_my_app 函數(shù),用來啟動 抖音 APP。
          save_video_met 函數(shù),點(diǎn)擊 ”點(diǎn)贊“ 按鈕。在檢測到漂亮小姐姐之后調(diào)用。
          play_next_video 函數(shù),向上滑動屏幕,播放下一個視頻。
          get_screen_shot_part_img 函數(shù),用來截取屏幕圖像,保存到電腦中,以便后續(xù)人臉識別。

          import os
          from PIL import Image

          # 抖音App的應(yīng)用包名和初始Activity
          package_name = 'com.ss.android.ugc.aweme'
          activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'

          def start_my_app(package_name, activity_name):
              # 打開 Android 應(yīng)用
              os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))

          def save_video_met(screen_name, find_girl_num):
              # 保存截圖
              img = Image.open(screen_name).convert('RGB')
              img.save("漂亮的小姐姐/DYGirl_%d.jpg" % find_girl_num)
              # 給視頻點(diǎn)贊
              os.system("adb shell input tap 1330 1750")

          def play_next_video():
              # 向上劃屏幕,播放下一段視頻
              os.system("adb shell input swipe 540 1300 540 500 100")

          def get_screen_shot_part_img(image_name):
              # 截圖
              os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")
              os.system("adb pull /sdcard/screenshot.jpg %s" % image_name)
              # 打開圖片
              img = Image.open(image_name).convert('RGB')
              # 圖片的原寬、高
              w, h = img.size
              # 截取部分,去掉其頭像、其他內(nèi)容雜亂元素
              img = img.crop((040012002750))
              img.thumbnail((int(w / 1.5), int(h / 1.5)))
              # 保存到本地
              img.save(image_name)
              return image_name```

          這些函數(shù)中的坐標(biāo)是根據(jù)我手機(jī)的屏幕坐標(biāo)寫的(華為 Mate 20 Pro),其他型號手機(jī)的同學(xué),可以根據(jù)自己手機(jī)屏幕的分辨率,對這些參數(shù)進(jìn)行調(diào)整。

          修改坐標(biāo)的方法我也大概說一下,在你手機(jī)的設(shè)置中,找到開發(fā)人員選項,然后將指針位置這個打開,然后你就可以看到你點(diǎn)擊到屏幕的位置了,頂部也會顯示你點(diǎn)擊的位置坐標(biāo)。

          打開抖音,手指放到點(diǎn)贊按鈕上,記錄下此時屏幕頂部顯示的坐標(biāo),然后把這個坐標(biāo)替換到代碼中就好了。

          (3)程序主邏輯部分

          根據(jù)前面分析的流程圖,編寫爬蟲程序的主邏輯。

          import datetime
          import time
          import shutil

          if __name__ == '__main__':

              access_token = get_access_token()
              # 設(shè)置一條視頻最長的識別時間,要是墨跡 10 秒還不露臉,也不管她了,下一個
              RECOGNITE_TOTAL_TIME = 10 
              # 識別次數(shù)
              recognite_count = 0

              # 圖片類型【網(wǎng)絡(luò)和本地】
              TYPE_IMAGE_NETWORK = 0
              TYPE_IMAGE_LOCAL = 1

              print("打開抖音~")

              start_my_app(package_name, activity_name)
              time.sleep(5)
              print("開始播放視頻~")
              find_girl_num = 0
              # 對當(dāng)前視頻截圖去人臉識別
              while True:
                  # 開始識別的時間
                  recognite_time_start = datetime.datetime.now()
                  # 識別次數(shù)
                  recognite_count = 1
                  # 循環(huán)地去刷抖音
                  while True:
                      # 獲取截圖
                      screen_name = get_screen_shot_part_img('images/temp%d.jpg' % recognite_count)
                      # 人臉識別
                      recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token))
                      recognite_count += 1
                      # 第n次識別結(jié)束后的時間
                      recognite_time_end = datetime.datetime.now()
                      # 這是一個美女
                      if recognite_result:
                          find_girl_num += 1
                          save_video_met(screen_name, find_girl_num)
                          print("已經(jīng)發(fā)現(xiàn) %d 個漂亮小姐姐" % find_girl_num)
                          break
                      else:
                          if (recognite_time_end - recognite_time_start).seconds < RECOGNITE_TOTAL_TIME:
                              continue
                          else:
                              print('超時?。。∵@是一條沒有吸引力的視頻!')
                              # 跳出里層循環(huán)
                              break
                  # 刪除臨時文件
                  shutil.rmtree('./images')
                  time.sleep(0.05)
                  os.mkdir('./images')

                  # 播放下一條視頻
                  print('==' * 30)
                  time.sleep(2)
                  print('準(zhǔn)備播放下一個視頻~')
                  play_next_video()
                  time.sleep(2)```

          有時候網(wǎng)絡(luò)可能卡一些,視頻加載需要一些時間,所以每次看到下一條視頻時,先停兩秒,等視頻差不多加載好了再開始檢測。

          后記

          這爬蟲我斷斷續(xù)續(xù)玩了一段時間了,反正沒事兒的時候手機(jī)放一邊,把爬蟲開了后臺跑著,讓它自己刷著玩。然后晚上拿起手機(jī)一看,哇手機(jī)里全是漂亮的小姐姐

          來源:Python之禪

          公眾號后臺回復(fù):wx,添加我的微信,可加入讀者交流群。

          推薦閱讀

          太秀了!用Excel也能實(shí)現(xiàn)和Python數(shù)據(jù)分析一樣的功能!

          利用 Python 分析了某化妝品企業(yè)的銷售情況,我得出的結(jié)論是?

          Python 爬取鏈家成都二手房源信息 asyncio + aiohttp 異步爬蟲實(shí)戰(zhàn)

          總說手機(jī)沒有“好壁紙”,Python一次性抓取500張“美女”圖片,夠不夠用!

          利用 Python 爬取了 37483 條上海二手房信息,我得出的結(jié)論是?

          瀏覽 56
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费无码国产 | 亚洲视频在线观 | 亚洲无码不卡视频在线观看 | 欧美另类极品 | 大香蕉久操国产 |