李明
|
抖音短视频的操作步骤(一)1.首先通过模拟器打开抖音,等待加载完毕。 2.完全进去后,左上角有个放大镜的窗口,点击搜索框,输入抖音ID(191433445) 3.点击用户的标签,点击头像,在点击进入“陈赫” 前,先看看关注的标签是否存在 4.进入“陈赫”页面后,点击粉丝,然后进行模拟滑动,通过上节的实际使用的(mitmdump)解析粉丝数据存入数据库中。 编写python的脚本通过appium操作抖音(二)
2.下载抖音apk
3.查看抖音apk的信息
#获取列表 adb devices
#进入监控日志 adb -s 127.0.0.1:62025 logcat>E:/log.txt
#启动后,点开抖音,然后查看E盘目录下的log.txt文件
3.获取安卓的版本号
4.测试配置
#!/usr/bin/env python
import time
from appium
import webdriver
from selenium.webdriver.support.ui
import WebDriverWait
cap = {
"platformName":
"Android",
"platformVersion":
"4.4.2",
"deviceName":
"127.0.0.1:62001",
"appPackage":
"com.ss.android.ugc.aweme",
"appActivity":
"com.ss.android.ugc.aweme.main.MainActivity",
"noReset":
True,
"unicodeKeyboard":
True,
"resetkeyboard":
True }
driver = webdriver.Remote(
"http://localhost:4723/wd/hub",cap)
def
get_size
(): x = driver.get_window_size()[
'width']
y = driver.get_window_size()[
'height']
return(x,y)
开始解析页面的xpath信息(三)1.关闭上边测试用的appium,单独启动下抖音app 2.暂停播放,启动uiautomatorviewer。源码包中有加强版的uiautomatorviewer。看过之前文章的老铁都懂。一定要暂停,否则uiautomatorviewer。
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1] 3.进入搜索页面后,需要先点击搜索框,如果框中存在“191433445”,直接点击,不存在需要在搜索框中输入“191433445”,然后点击右边的搜索按钮
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[1] 3.搜索结果页面,点击【用户】,点击【头像】,进入【用户信息界面】。
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.support.v7.app.ActionBar
$Tab[3]/android.widget.LinearLayout[1]/android.widget.TextView[1]
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1] 4.进入【用户信息界面】,点击红色粉丝这个位置。进入粉丝列表
//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2] python代码的编写
#!/usr/bin/env python
import time
from appium
import webdriver
from selenium.webdriver.support.ui
import WebDriverWait
cap = {
"platformName":
"Android",
"platformVersion":
"4.4.2",
"deviceName":
"127.0.0.1:62001",
"appPackage":
"com.ss.android.ugc.aweme",
"appActivity":
"com.ss.android.ugc.aweme.main.MainActivity",
"noReset":
True,
"unicodeKeyboard":
True,
"resetkeyboard":
True }
driver = webdriver.Remote(
"http://localhost:4723/wd/hub",cap)
def
get_size
(): x = driver.get_window_size()[
'width']
y = driver.get_window_size()[
'height']
return(x,y)
try:
#点击搜索 print(
'点击搜索')
if WebDriverWait(driver,
60).until(
lambda x:x.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1]")):
driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.TabHost[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ImageView[1]").click()
except:
#[26,76][115,165] driver.tap([(
26,
76),(
115,
165)],
500)
#定位搜索框
if WebDriverWait(driver,
60).until(
lambda x:x.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]")):
#获取douyin_id进行搜索 driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").send_keys(
'191433445')
while driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").text !=
'191433445':
driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.EditText[1]").send_keys(
'191433445')
time.sleep(
0.1)
#点击搜索 driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]").click()
#点击用户标签
if WebDriverWait(driver,
10).until(
lambda x:x.find_element_by_xpath(
"//android.widget.TextView[@text='用户']")):
driver.find_element_by_xpath(
"//android.widget.TextView[@text='用户']").click()
#点击头像
if WebDriverWait(driver,
10).until(
lambda x:x.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]")):
driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[2]/android.view.View[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]").click()
#点击粉丝按钮
if WebDriverWait(driver,
10).until(
lambda x:x.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2]")):
driver.find_element_by_xpath(
"//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.LinearLayout[3]/android.widget.TextView[2]").click()
x1 = int(driver.get_window_size()[
'width']*
0.5)
y1 = int(driver.get_window_size()[
'height']*
0.75)
y2 = int(driver.get_window_size()[
'height']*
0.25)
while
True:
if
'没有更多了'
in driver.page_source:
break driver.swipe(x1,y1,x1,y2)
time.sleep(
0.5)
PS:因用的是模拟器,导致电脑很卡,如果是真机就好些了,开启usb调试,通过adb devices,查看真机的名称,然后修改python的代码。 |
2019-06-10 09:41:12