1.相关看了一下 网络开发爬虫实战 这本书里面appium 相关内容后写的
import time
from appium import webdriver
from selenium.webdrivermon.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 常量用大写表示
PLATFROM = "Android"
DEVIE_NAME = "127.0.0.1:62025"
APP_PACKAGE = t.mm"
APP_ACTIVITY = ".ui.LauncherUI"
DEIVER_SERVER = "localhost:4723/wd/hub"
TIMROUT = 300
USERNAME = "账号"
PASSWORD = "密码"FLICK_START_X = 300
FLICK_START_Y = 300
FLICK_DISTANCE = 700class Moments(object):def __init__(self):"""初始化操作"""# 驱动配置操作self.desired_caps = {"platformName": PLATFROM,"deviceName": DEVIE_NAME,"appPackage": APP_PACKAGE,"appActivity": APP_ACTIVITY,"noReset": True # 这个很重要 True表示不删除相关信息,不写每一次都需要重新登录}self.driver = webdriver.Remote(DEIVER_SERVER, self.desired_caps)self.wait = WebDriverWait(self.driver, TIMROUT)def login(self):"""登陆操作:return:"""# 登陆操作login = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/d75")))login.click()time.sleep(3)# 手机号输入phone = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/hz")))phone.set_text(USERNAME)time.sleep(1)# 点击下一步next = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/alr")))next.click()time.sleep(3)# 输入密码password = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/hz")))password.set_text(PASSWORD)time.sleep(1)# 点击登陆submit = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/alr")))submit.click()# 解决提示 点击否submit = self.wait.until(EC.presence_of_element_located((By.ID, t.mm:id/an2")))submit.click()time.sleep(10)def enter(self):# 发现tab = self.wait.until(EC.presence_of_all_elements_located((By.XPATH, '//*[@resource-id=t.mm:id/cdh"]')))[2]tab.click()time.sleep(3)# 朋友圈页面tab = self.wait.until(EC.presence_of_all_elements_located((By.XPATH, """//*[@resource-id=t.mm:id/aaf"]""")))[0]tab.click()def crawl(self):for i in range(100):# 向上滑动self.driver.swipe(FLICK_START_X, FLICK_START_Y + FLICK_DISTANCE, FLICK_START_X, FLICK_START_Y,200)print("滑动一次")time.sleep(1)# 解析items_list = self.wait.until(EC.presence_of_all_elements_located((By.XPATH, """//*[@resource-id=t.mm:id/dkb"]""")))for item in items_list:try:# 昵称nick_name = item.find_element_by_id(t.mm:id/as6').get_attribute("text")# 正文content = item.find_element_by_id(t.mm:id/dkf').get_attribute("text")# 时间date = item.find_element_by_id(t.mm:id/dfw').get_attribute("text")print(nick_name)print(content)print(date)except:passduix = Moments()
# duix.login()
time.sleep(3)
()
time.sleep(2)
awl()
1.代码比较简单,但是代码里面 各个元素的id 和取xpath的规则 可能会因为机型不一样 而不一样。
2.因为是练习,所有就从登录微信 开始一步步操作 ,其实上 只用设置noReset 等于True ,我们就不需要每一次都登录了,还能保存数据。
3.appium/python-client使用文档
4. desired_caps 的各种参数(启动app的时候 ,各种参数配置) .md
本文发布于:2024-01-31 08:54:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170666249227346.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |