不懂抓包也能做APP爬蟲?1招教你爬取抖音流行歌名

2022-06-05 13:36:09 字數 3114 閱讀 1631

**實現如下:

#

-*- encoding=utf8 -*-

__author__ = "

airtestproject

"from airtest.core.api import *auto_setup(

__file__,devices=["

android:"])

"com.netease.cloudmusic")

"com.netease.cloudmusic")

sleep(1.0)

from poco.drivers.android.uiautomation import

androiduiautomationpoco

poco = androiduiautomationpoco(use_airtest_input=true, screenshot_each_action=false)

#同意服務條款

poco("

com.netease.cloudmusic:id/agree

").click()

wait(template(r

"tpl1595916981414.png

", record_pos=(0.004, -0.452), resolution=(900, 1600)))

sleep(2.0)

#勾選使用者協議並點選立即體驗

poco("

com.netease.cloudmusic:id/agreecheckbox

").click()

poco(

"com.netease.cloudmusic:id/trial

").click()

sleep(2.0)

poco("搜尋

"sleep(1.0)

#poco("搜尋"

).click()

sleep(1.0)

poco(

"com.netease.cloudmusic:id/search_src_text

").click()

poco(

"com.netease.cloudmusic:id/search_src_text

").set_text("抖音"

)sleep(1.0)

poco.click([0.14,0.13])

assert_exists(template(r

"tpl1595821867472.png

", record_pos=(-0.283, -0.489), resolution=(900, 1600)), "

找到抖音排行榜")

#點選進入抖音排行榜

poco("

com.netease.cloudmusic:id/title

").click()

進入抖音排行榜的歌曲列表之後,我們先來觀察下此刻的ui樹結構:

獲取完當前頁面載入的所有歌曲名稱之後,我們可以通過向上滑動列表,來不斷載入新的歌曲控制項。

但這時候,我們還需要解決2個問題:

我們可以事先定義好1個空的陣列,將獲取到的歌曲名稱放到陣列裡面,在放入歌曲名稱之前,做1個判斷,放入陣列的歌名不能與陣列已經存在的歌名相同,這樣子就能夠保證我們每次放入的都是新的歌名;

最終實現的效果如下:

定義1個空陣列用於存放排行榜的歌名

titles =

#定義陣列目前的長度和最終的長度

current_count, last_count =len(titles), len(titles)

while

true:

last_count =len(titles)

for title in poco("

com.netease.cloudmusic:id/musicinfolist

").child("

com.netease.cloudmusic:id/musiclistitemcontainer"):

a = title.offspring("

com.netease.cloudmusic:id/songname")

ifnot

a.exists():

continue

name =a.get_text()

ifnot name in

titles:

print

(name)

current_count =len(titles)

poco.swipe([0.5,0.7],[0.5,0.1],duration=2)

sleep(1.0)

#當倆者數值相等,即current_count不再增加時,表明爬取完畢

if current_count ==last_count:

print("

總共爬取

"+str(last_count)+"

首歌曲的名稱")

break

上述就是利用airtest實現模擬爬取的全部過程。當然,我們不僅可以把爬取的歌曲名稱列印在log檢視窗中,還可以將它儲存在指定的文件中,這個大家可以嘗試著自己實現一下。

airtest官網:

airtest教程官網:

搭建企業私有雲服務:

Python爬蟲實戰案例 機 App 抓包爬

class douyuspideritem scrapy.item name scrapy.field 儲存照 的名字 imagesurls scrapy.field 照 的 url 路徑 imagespath scrapy.field 照 儲存在本地的路徑import scrapy 返回從 jso...

App防止被抓包

1.使用https,可以初步防止一些只抓http包的軟體。2.如果網路框架使用的是okhttp,可以在builder中設定proxy proxy.no proxy 屬性,禁止使用 這樣一般使用中間人的 就使用不了,客戶端是直接訪問伺服器。3.判斷是否使用了 final boolean flag bu...

Fiddler抓包 只抓APP的請求

from 把來自pc的請求過濾掉,因為請求太多,這樣會找不到重要的資訊了。環境準備 1.電腦上已裝fiddler 2.手機和電腦在同一區域網 一 設定 1.fiddler tools fiddler options connections 勾選allow remote computers to co...