2023年6月29日发(作者:)
Python+appium+安卓真机实现微信朋友圈爬⾍2.⽂件中标注的需要修改的地⽅,控件id:请打开android_sdk压缩包,tools⽂件夹双击运⾏,同时⽤户请⾃⾏将安卓⼿机调到朋友圈界⾯,点击uiautomatorviewer中左上⾓第⼆个按钮捕捉屏幕按钮,此时安卓机屏幕投影在电脑上,然后点击响应的控件在右侧树形图中找到对应的Node根据右下⽅的Node detail中的resources-id,复制粘贴即可from appium import webdriverfrom import WebDriverWait
from t import expected_conditions as EC
from import By
from _action import TouchActionfrom ions import NoSuchElementException,TimeoutExceptionimport time
#控件id请修改PLATFORM = 'Android'
deviceName = 'SM_J7008' #请修改为您的⼿机app_package = ''
app_activity = '.erUI' #请修改driver_server = '127.0.0.1:4723/wd/hub'
class Daily():
def __init__(self):
d_caps={
'platformName': PLATFORM,
'deviceName': deviceName, 'appPackage': app_package,
'appActivity': app_activity }
= (driver_server, d_caps)
= WebDriverWait(, 300)
def login(self):
print('点击登陆按钮——————')
login = (ce_of_element_located((, ':id/ene'))) #控件id ()
# 输⼊⼿机号
phone = (ce_of_element_located((, ':id/m7')))#控件id phone_num = input('请输⼊⼿机号') _keys(phone_num) print('点击下⼀步中') button = (ce_of_element_located((, ':id/b2f')))#控件id () pass_w = input('请输⼊密码:') password = (ce_of_element_located((, "//xt[@resource-id=':id/m7' and @text='']"))) _keys(pass_w) login = _element_by_id(':id/b2f')#控件id ()
# 提⽰ 看看⼿机通讯录 否 tip = (t_to_be_clickable((, ':id/b48')))#控件id () def enter(self): print('点击发现——') tab = (t_to_be_clickable((, '//veLayout[3]'))) print('已经找到发现按钮') (6) () # (_to_be_present_in_element((,':id/cdj'),'发现'))
print('点击朋友圈') friends = (ce_of_element_located( (, '//*[@resource-id="android:id/list"]/*[@class="Layout"][1]'))) ()
def crawl_pic(self,id): print("开始抓取朋友圈动态") while True: # try: # pics = WebDriverWait(, 10).until(ce_of_all_elements_located((, id))) # finally: # (300, 750, 300, 200) try: pics = WebDriverWait(, 10).until( ce_of_all_elements_located((, id)) ) #print(pics) except (NoSuchElementException,TimeoutException): print("元素不存在") (300, 750, 300, 200) continue else:
# pics = _elements_by_id(id) #pics = WebDriverWait(, 10).until(ce_of_all_elements_located((, id))) print("当前页⾯有",len(pics),"个图⽚1") #(7)
for pic in pics: try:
print("----点击图⽚---") () (2) el = _element_by_id(":id/ah7") TouchAction().long_press(el).perform().release() (3) save = (ce_of_element_located((, '//*[@resource-id=":id/mg"][3]'))) #控件id print("----保存图⽚---") () (3) print("已存⼊⼿机相册") TouchAction().tap(el).perform().release() (1) # pic_ret = (ce_of_element_located((, ':id/ah7'))) #c8a print("----下⼀张---")
except BaseException as e: print(e) print("该页⾯爬取完毕") (300, 750, 300, 200)
def crawl_video(self): print("开始抓取朋友圈动态") while True: try: videos = WebDriverWait(, 10).until( ce_of_all_elements_located((, ':id/atb'))#控件id ) #print(videos) except (NoSuchElementException,TimeoutException): print("元素不存在") (300, 750, 300, 200) continue else: for video in videos: try: #判断昨天的内容停⽌下载 time_txt = _element_by_id(":id/eza")#控件id if(time_=='昨天'): #结束 print("今天的内容已下载完毕。",time_) doubleclick = _element_by_id(":id/kx") TouchAction().tap(doubleclick,count=2).perform().release() return
print("----点击视频---") () (2) el = _element_by_id(":id/f5s")#控件id TouchAction().long_press(el).perform() (3) save = (ce_of_element_located((, '//*[@resource-id=":id/mg"][3]'))) #控件id print("----保存视频---") () (3) print("已存⼊⼿机相册") video_ret = (ce_of_element_located((, ':id/ah5'))) #控件id print("----下⼀张---") video_() (1)
except BaseException as e: print(e) (300, 750, 300, 300)
def main(self): ()#登陆 ()#进⼊朋友圈
_pic(':id/f0i')#单独⼀张图⽚#控件id _pic(':id/fa_')#九宫格图⽚1#控件id _pic(':id/fa1')#九宫格图⽚2#控件id _pic(':id/fa2')#九宫格图⽚3#控件id _pic(':id/fa3')#九宫格图⽚4#控件id _pic(':id/fa4')#九宫格图⽚5#控件id _pic(':id/fa5')#九宫格图⽚6#控件id _pic(':id/fa6')#九宫格图⽚7#控件id _pic(':id/fa7')#九宫格图⽚8#控件id _pic(':id/fa8')#九宫格图⽚9#控件id _video()#视频
D = Daily()
()
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687982702a63543.html
评论列表(0条)