日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能

瀏覽:24日期:2022-08-07 17:58:49
目錄1. 安裝appium-python-client模塊并啟動(dòng)已安裝好的環(huán)境 1.1 安裝appium-python-client模塊1.2 啟動(dòng)夜神模擬器1.3 啟動(dòng)appium-desktop1.4 利用上一小節(jié)所學(xué)習(xí)的內(nèi)容獲取Desired Capabilities參數(shù)2. 初始化以及獲取移動(dòng)設(shè)備分辨率3. 定位元素以及提取文本的方法3.1 點(diǎn)擊appium desktop右上角的放大鏡圖標(biāo)3.2 定位界面的使用方法如下圖所示3.3 點(diǎn)擊短視頻的作者名字,查看并獲取該元素的id3.4 在python使用代碼通過(guò)元素id獲取該元素的文本內(nèi)容4. 控制抖音app滑動(dòng)4.1 appium滑動(dòng)的函數(shù)5. 整理并完成自動(dòng)滑動(dòng)的代碼6. 關(guān)于模擬式移動(dòng)端爬蟲的參考閱讀小結(jié)

以控制抖音app滑動(dòng)并獲取抖音短視頻發(fā)布者昵稱和點(diǎn)贊數(shù)等信息為例:

python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能

1. 安裝appium-python-client模塊并啟動(dòng)已安裝好的環(huán)境 1.1 安裝appium-python-client模塊

window的虛擬環(huán)境下執(zhí)行pip install appium-python-client

1.2 啟動(dòng)夜神模擬器

進(jìn)入夜神模擬器所在的安裝路徑的bin目錄下,進(jìn)入cmd終端,使用adb命令建立adb server和模擬器的連接

1.adb devices

C:Program Files (x86)Noxbin>adb devicesList of devices attached* daemon not running; starting now at tcp:5037* daemon started successfully

2.nox_adb.exe connect 127.0.0.1:62001

C:Program Files (x86)Noxbin>nox_adb.exe connect 127.0.0.1:62001already connected to 127.0.0.1:62001

3.adb devices

C:Program Files (x86)Noxbin>adb devicesList of devices attached127.0.0.1:62001 device1.3 啟動(dòng)appium-desktop

點(diǎn)擊start server啟動(dòng)appium服務(wù)

[Appium] Welcome to Appium v1.10.0[Appium] Appium REST http interface listener started on 0.0.0.0:47231.4 利用上一小節(jié)所學(xué)習(xí)的內(nèi)容獲取Desired Capabilities參數(shù)

1.獲取模擬設(shè)備的型號(hào)

打開設(shè)置——關(guān)于平板電腦 查看型號(hào),獲取模擬設(shè)備的型號(hào)

2.獲取app包名稱 以及 app進(jìn)程名

打開模擬器中的抖音短視頻app 在adb連接正確的情況下,在夜神模擬器安裝目錄的bin目錄下的cmd中輸入adb shell 進(jìn)入adb shell后輸入 dumpsys activity | grep mFocusedActivity ``com.ss.android.ugc.aweme`就是app包名 .main.MainActivity就是進(jìn)程名 注意前邊有個(gè)點(diǎn).2. 初始化以及獲取移動(dòng)設(shè)備分辨率

完成代碼如下,并運(yùn)行代碼查看效果:如果模擬器中抖音app被啟動(dòng),并打印出模擬設(shè)備的分辨率則成功

from appium import webdriver# 初始化配置,設(shè)置Desired Capabilities參數(shù)desired_caps = { ’platformName’: ’Android’, ’deviceName’: ’SM-G955F’, ’appPackage’: ’com.ss.android.ugc.aweme’, ’appActivity’: ’.main.MainActivity’}# 指定Appium Serverserver = ’http://localhost:4723/wd/hub’# 新建一個(gè)driverdriver = webdriver.Remote(server, desired_caps)# 獲取模擬器/手機(jī)的分辨率(px)width = driver.get_window_size()[’width’]height = driver.get_window_size()[’height’]print(width, height)

移動(dòng)設(shè)備分辨率

driver.get_window_size()[‘width’] driver.get_window_size()[‘height’]3. 定位元素以及提取文本的方法3.1 點(diǎn)擊appium desktop右上角的放大鏡圖標(biāo)

如圖填寫配置,并點(diǎn)擊start session

python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能

3.2 定位界面的使用方法如下圖所示

python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能

3.3 點(diǎn)擊短視頻的作者名字,查看并獲取該元素的id

python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能

3.4 在python使用代碼通過(guò)元素id獲取該元素的文本內(nèi)容

實(shí)例化appium driver對(duì)象后添加如下代碼,運(yùn)行并查看效果

# 獲取視頻的各種信息:使用appium desktop定位元素print(driver.find_element_by_id(’bc’).text) # 發(fā)布者名字print(driver.find_element_by_id(’al9’).text) # 點(diǎn)贊數(shù)print(driver.find_element_by_id(’al_’).text) # 留言數(shù)print(driver.find_element_by_id(’a23’).text) # 視頻名字,可能不存在,報(bào)錯(cuò)

定位元素及獲取其文本內(nèi)容的方法

driver.find_element_by_id(元素的id).text driver.find_element_by_xpath(定位元素的xpath規(guī)則).text4. 控制抖音app滑動(dòng)4.1 appium滑動(dòng)的函數(shù)

從(start_x, start_y)滑動(dòng)到(end_x, end_y)

driver.swipe(start_x, start_y, end_x, end_y) 4.2 控制抖音app滑動(dòng)的代碼實(shí)現(xiàn)

start_x = width // 2 # 滑動(dòng)的起始點(diǎn)的x坐標(biāo),屏幕寬度中心點(diǎn)start_y = height // 3 * 2 # 滑動(dòng)的起始點(diǎn)的y坐標(biāo),屏幕高度從上開始到下三分之二處distance = height // 2 # y軸滑動(dòng)距離:屏幕高度一半的距離end_x = start_x # 滑動(dòng)的終點(diǎn)的x坐標(biāo)end_y = start_y-distance # 滑動(dòng)的終點(diǎn)的y坐標(biāo)# 滑動(dòng)driver.swipe(start_x, start_y, end_x, end_y)5. 整理并完成自動(dòng)滑動(dòng)的代碼

import timefrom appium import webdriverclass DouyinAction(): '''自動(dòng)滑動(dòng),并獲取抖音短視頻發(fā)布者的id''' def __init__(self, nums:int=None):# 初始化配置,設(shè)置Desired Capabilities參數(shù)self.desired_caps = { ’platformName’: ’Android’, ’deviceName’: ’SM-G955F’, ’appPackage’: ’com.ss.android.ugc.aweme’, ’appActivity’: ’.main.MainActivity’}# 指定Appium Serverself.server = ’http://localhost:4723/wd/hub’# 新建一個(gè)driverself.driver = webdriver.Remote(self.server, self.desired_caps)# 獲取模擬器/手機(jī)的分辨率(px)width = self.driver.get_window_size()[’width’]height = self.driver.get_window_size()[’height’]print(width, height)# 設(shè)置滑動(dòng)初始坐標(biāo)和滑動(dòng)距離self.start_x = width//2 # 屏幕寬度中心點(diǎn)self.start_y = height//3*2 # 屏幕高度從上開始到下三分之二處self.distance = height//2 # 滑動(dòng)距離:屏幕高度一半的距離# 設(shè)置滑動(dòng)次數(shù)self.nums = nums def comments(self):# app開啟之后點(diǎn)擊一次屏幕,確保頁(yè)面的展示time.sleep(2)self.driver.tap([(500, 1200)], 500) def scroll(self):# 無(wú)限滑動(dòng)i = 0while True: # 模擬滑動(dòng) print(’滑動(dòng)ing...’) self.driver.swipe(self.start_x, self.start_y, self.start_x, self.start_y-self.distance) time.sleep(1) self.get_infos() # 獲取視頻發(fā)布者的名字 # 設(shè)置延時(shí)等待 time.sleep(4) # 判斷是否退出 if self.nums is not None and self.nums == i:break i += 1 def get_infos(self):# 獲取視頻的各種信息:使用appium desktop定位元素print(self.driver.find_element_by_id(’bc’).text) # 發(fā)布者名字print(self.driver.find_element_by_id(’al9’).text) # 點(diǎn)贊數(shù)print(self.driver.find_element_by_id(’al_’).text) # 留言數(shù)print(self.driver.find_element_by_id(’a23’).text) # 視頻名字,可能不存在,報(bào)錯(cuò)# # 點(diǎn)擊【分享】坐標(biāo)位置 671,1058# self.driver.tap([(671, 1058)])# time.sleep(2)# # 向左滑動(dòng)露出 【復(fù)制鏈接】 580,1100 --> 200, 1100# self.driver.swipe(580,1100, 20, 200, 1100)# # self.driver.get_screenshot_as_file(’./a.png’) # 截圖# # 點(diǎn)擊【復(fù)制鏈接】 距離右邊60 距離底邊170 720-60,1280-170# self.driver.tap([(660, 1110)])# # self.driver.get_screenshot_as_file(’./b.png’) # 截圖 def main(self):self.comments() # 點(diǎn)擊一次屏幕,確保頁(yè)面的展示time.sleep(2)self.scroll() # 滑動(dòng)if __name__ == ’__main__’: action = DouyinAction(nums=5) action.main()

至此,可以參考爬蟲5.0課程項(xiàng)目庫(kù),使用fiddler等抓包工具,利用appium+mitmproxy+wget等python模塊自動(dòng)獲取抖音視頻文件

6. 關(guān)于模擬式移動(dòng)端爬蟲的參考閱讀

https://github.com/butomo1989/docker-android

https://blog.csdn.net/weixin_42620645/article/details/83828863

https://blog.csdn.net/weixin_39211232/article/details/83410130#Android_16

https://www.jianshu.com/p/bf1ca3d4ac76

http://www.testclass.net/appium/

小結(jié)

了解 appium-python-client模塊定位元素以及提取其文本內(nèi)容的方法了解 appium-python-client模塊控制滑動(dòng)動(dòng)作的方法 7. 完整代碼

douyin.py

import timefrom appium import webdriverclass DouyinAction(): '''自動(dòng)滑動(dòng),并獲取抖音短視頻發(fā)布者的id''' def __init__(self, nums:int=None):# 初始化配置,設(shè)置Desired Capabilities參數(shù)self.desired_caps = { ’platformName’: ’Android’, ’deviceName’: ’SM-G955F’, ’appPackage’: ’com.ss.android.ugc.aweme’, ’appActivity’: ’.main.MainActivity’}# 指定Appium Serverself.server = ’http://localhost:4723/wd/hub’# 新建一個(gè)driverself.driver = webdriver.Remote(self.server, self.desired_caps)# 獲取模擬器/手機(jī)的分辨率(px)width = self.driver.get_window_size()[’width’]height = self.driver.get_window_size()[’height’]print(width, height)# 設(shè)置滑動(dòng)初始坐標(biāo)和滑動(dòng)距離self.start_x = width//2 # 屏幕寬度中心點(diǎn)self.start_y = height//3*2 # 屏幕高度從上開始到下三分之二處self.distance = height//2 # 滑動(dòng)距離:屏幕高度一半的距離# 設(shè)置滑動(dòng)次數(shù)self.nums = nums def comments(self):# app開啟之后點(diǎn)擊一次屏幕,確保頁(yè)面的展示time.sleep(2)self.driver.tap([(500, 1200)], 500) def scroll(self): print(’滑動(dòng)ing...’)self.driver.swipe(self.start_x, self.start_y, self.start_x, self.start_y-self.distance)time.sleep(3)self.driver.find_element_by_xpath(’/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.HorizontalScrollView/android.widget.LinearLayout/android.widget.TabHost/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout[1]’).click()time.sleep(3)# 無(wú)限滑動(dòng)i = 0while True: # 模擬滑動(dòng) print(’滑動(dòng)ing...’) self.driver.swipe(self.start_x, self.start_y, self.start_x, self.start_y-self.distance) time.sleep(3) self.get_infos() # 獲取視頻發(fā)布者的名字 # 設(shè)置延時(shí)等待 time.sleep(4) # 判斷是否退出 if self.nums is not None and self.nums == i:break i += 1 def get_infos(self):# 獲取視頻的各種信息:使用appium desktop定位元素print(self.driver.find_element_by_id(’ap’).text) # 發(fā)布者名字print(self.driver.find_element_by_id(’xm’).text) # 點(diǎn)贊數(shù)print(self.driver.find_element_by_id(’xn’).text) # 留言數(shù)print(self.driver.find_element_by_id(’oz’).text) # 視頻名字,可能不存在,報(bào)錯(cuò)# # 點(diǎn)擊【分享】坐標(biāo)位置 671,1058# self.driver.tap([(671, 1058)])# time.sleep(2)# # 向左滑動(dòng)露出 【復(fù)制鏈接】 580,1100 --> 200, 1100# self.driver.swipe(580,1100, 20, 200, 1100)# # self.driver.get_screenshot_as_file(’./a.png’) # 截圖# # 點(diǎn)擊【復(fù)制鏈接】 距離右邊60 距離底邊170 720-60,1280-170# self.driver.tap([(660, 1110)])# # self.driver.get_screenshot_as_file(’./b.png’) # 截圖 def main(self):self.comments() # 點(diǎn)擊一次屏幕,確保頁(yè)面的展示time.sleep(2)self.scroll() # 滑動(dòng)if __name__ == ’__main__’: action = DouyinAction(nums=5) action.main()

到此這篇關(guān)于python利用Appium自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python Appium提取數(shù)據(jù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲福利| 99精品综合| 久久99偷拍| 自拍自偷一区二区三区| 99热精品久久| 国产精品久一| 婷婷视频一区二区三区| 群体交乱之放荡娇妻一区二区| 日韩区欧美区| 久久亚州av| 国产伦精品一区二区三区在线播放| 人人爽香蕉精品| 久久国产成人| 91嫩草精品| 亚洲青青久久| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 老鸭窝毛片一区二区三区| 日韩精品社区| 日韩精品欧美精品| 视频小说一区二区| 欧美日韩国产高清电影| 国产中文在线播放| 日本不卡高清| 中文字幕在线看片| 亚洲精品麻豆| 国产一区二区亚洲| 亚洲综合中文| 日韩一区网站| 日韩中文影院| 日本午夜精品视频在线观看| 日本午夜精品| 久久久久久黄| 麻豆成全视频免费观看在线看| 麻豆一区二区三| 一区二区三区四区日本视频| 欧美特黄一级大片| 日韩精品中文字幕一区二区| 捆绑调教日本一区二区三区| 亚洲韩日在线| 日韩欧美一区二区三区在线视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | www成人在线视频| 国产精品久久久久9999高清| 一本一道久久a久久精品蜜桃| 国产精品扒开腿做爽爽爽软件| 久久久91麻豆精品国产一区| 日韩有码av| 日韩一区精品字幕| 美女久久99| 视频一区二区三区中文字幕| 久久99伊人| 日韩高清中文字幕一区| 免费久久精品视频| 欧美午夜不卡| 在线精品视频在线观看高清| 久久久久久久久久久妇女| 蜜桃视频一区二区三区| 国产高清日韩| 欧美国产日韩电影| 日韩在线观看中文字幕| 日韩高清二区| 国产欧美日韩在线一区二区| 免费视频最近日韩| 免费不卡在线观看| 成人国产精品久久| 日韩1区2区| 精品亚洲精品| 日韩福利视频导航| 日韩精品久久理论片| 国产精品男女| 欧美亚洲一级| 久久精品一区二区国产| a国产在线视频| 亚洲视频二区| 99久久亚洲精品蜜臀| 色在线视频观看| 国产精品一区亚洲| 国产 日韩 欧美 综合 一区| 亚洲1234区| 蜜桃传媒麻豆第一区在线观看| japanese国产精品| 亚洲三级视频| 国产suv精品一区| 青青国产精品| 日韩成人三级| 国产一区二区久久久久| 亚洲电影在线| 国产精品亚洲综合色区韩国| 在线日韩一区| 91久久视频| 丝袜a∨在线一区二区三区不卡| 国产日韩欧美一区在线| 日本综合视频| 麻豆国产精品777777在线| 亚洲成a人片| 国产精品毛片一区二区在线看| 91九色精品| 国产欧美亚洲一区| 国产乱码精品一区二区三区亚洲人| 亚洲综合五月| 国产精品13p| 久久国产电影| 成人在线免费观看网站| 伊人久久高清| 成午夜精品一区二区三区软件| 一区免费视频| 合欧美一区二区三区| 久久亚州av| 欧美亚洲三级| 日本精品久久| 亚洲日本免费电影| 91av一区| 亚洲精品看片| 国产精品一区二区精品| 乱一区二区av| 亚洲精品系列| 亚洲特级毛片| 丰满少妇一区| 久久久久中文| 久久uomeier| 99国产一区| 亚洲欧洲av| 国产乱子精品一区二区在线观看| 国产韩日影视精品| 日韩av资源网| 国产精品观看| 欧美+亚洲+精品+三区| 激情黄产视频在线免费观看| 欧美xxxx中国| 裤袜国产欧美精品一区| 免费在线成人| 美女视频网站久久| 亚洲一级少妇| 免费视频国产一区| 三级欧美韩日大片在线看| 国产欧美日韩一区二区三区四区| 国产精品sss在线观看av| 精品视频网站| 青青青国产精品| 欧美成人亚洲| 日韩中文视频| 欧美aa在线视频| 婷婷综合网站| 综合欧美精品| 精品一区视频| 亚洲精品va| 在线看片国产福利你懂的| 午夜视频一区二区在线观看| 久久激情五月婷婷| 91免费精品国偷自产在线在线| 国产视频一区二区在线播放| 黄色aa久久| 亚洲激情五月| 人人爱人人干婷婷丁香亚洲| 亚洲福利专区| 国产精品99在线观看| 91久久黄色| 日韩中文字幕一区二区三区| 亚洲高清久久| 精品国产a一区二区三区v免费| 日韩av网站在线观看| 国产欧美88| 国产福利片在线观看| 日韩专区视频网站| 欧美日本不卡高清| 中文字幕在线看片| 免费视频久久| 久久av免费看| 欧美日韩在线网站| 少妇精品久久久一区二区| 国产精品99久久免费| 四虎影视精品| 亚洲精品影院在线观看| 久久99久久久精品欧美| 久久精品官网| 日韩欧美激情| 日本久久成人网| 亚洲香蕉久久| 色爱综合网欧美| 一区视频在线| 国产精品黄色片| 欧美手机在线| 国产精品一区高清| 亚洲高清不卡| 免费视频一区二区三区在线观看| 在线日韩av| 久久一区视频| 美女国产一区| 国产精品久久久久蜜臀| 色8久久久久| 激情综合亚洲| 免费一级欧美在线观看视频| 国产美女一区| 伊人网在线播放| 欧美一区91| 国产主播一区| 久久精品人人| 亚洲精品在线二区| 91tv亚洲精品香蕉国产一区| 日本va欧美va精品发布|