注册 登录
编程论坛 Python论坛

有偿!利用appium爬取微信朋友圈数据出现问题!

夜莺不会唱歌 发布于 2020-10-07 15:05, 1306 次点击
以下代码陷入了死循环,不知道该怎么解决,爬取的信息也没办法正常保存,求大佬解决,有偿!!!!1   

def get_data(self):
        while True:
            # 获取 ListView
            items = self.wait.until(EC.presence_of_all_elements_located((By.ID, 'com.tencent.mm:id/fol')))
            #presence_of_all_elements_located:判断是否至少有1个元素存在于dom树中。
            # 滑动
            self.driver.swipe(self.start_x, self.start_y, self.end_x, self.end_y, 1000)
            # 遍历获取每个List数据
            for item in items:
                try:
                    # moment_text = item.find_element_by_id('com.tencent.mm:id/b3b').text
                    # 日期
                    day_text = item.find_element_by_id('com.tencent.mm:id/fnr').get_attribute('text')
                    # 月份
                    month_text = item.find_element_by_id('com.tencent.mm:id/fmo').get_attribute('text')
                    # 昵称
                    nickname = item.find_element_by_id('com.tencent.mm:id/e3x').get_attribute('text')
                    # 正文
                    if item.find_element_by_id('com.tencent.mm:id/b_l').get_attribute('text'):
                        content = item.find_element_by_id('com.tencent.mm:id/b_l').get_attribute('text')
                    else:
                        content = item.find_element_by_id('com.tencent.mm:id/b_').get_attribute('text')
                    if content == '':
                        pass
                    else:
                        print(month_text+day_text,nickname + ':', content)
                        f = open('contents.txt', 'a', encoding='utf-8')
                        f.write('%s' % month_text + '%s' % day_text+'%s' % nickname + ':' + '%s' % content)
                        f.write( '\n' + '------------------------------------' + '\n')
                        time.sleep(3)
                except NoSuchElementException:
                    pass
2 回复
#2
fall_bernana2020-10-09 10:25
以下是引用夜莺不会唱歌在2020-10-7 15:05:24的发言:

以下代码陷入了死循环,不知道该怎么解决,爬取的信息也没办法正常保存,求大佬解决,有偿!!!!1   

def get_data(self):
        while True:
            # 获取 ListView
            items = self.wait.until(EC.presence_of_all_elements_located((By.ID, 'com.tencent.mm:id/fol')))
            #presence_of_all_elements_located:判断是否至少有1个元素存在于dom树中。
            # 滑动
            self.driver.swipe(self.start_x, self.start_y, self.end_x, self.end_y, 1000)
            # 遍历获取每个List数据
            for item in items:
                try:
                    # moment_text = item.find_element_by_id('com.tencent.mm:id/b3b').text
                    # 日期
                    day_text = item.find_element_by_id('com.tencent.mm:id/fnr').get_attribute('text')
                    # 月份
                    month_text = item.find_element_by_id('com.tencent.mm:id/fmo').get_attribute('text')
                    # 昵称
                    nickname = item.find_element_by_id('com.tencent.mm:id/e3x').get_attribute('text')
                    # 正文
                    if item.find_element_by_id('com.tencent.mm:id/b_l').get_attribute('text'):
                        content = item.find_element_by_id('com.tencent.mm:id/b_l').get_attribute('text')
                    else:
                        content = item.find_element_by_id('com.tencent.mm:id/b_').get_attribute('text')
                    if content == '':
                        pass
                    else:
                        print(month_text+day_text,nickname + ':', content)
                        f = open('contents.txt', 'a', encoding='utf-8')
                        f.write('%s' % month_text + '%s' % day_text+'%s' % nickname + ':' + '%s' % content)
                        f.write( '\n' + '------------------------------------' + '\n')
                        time.sleep(3)
                except NoSuchElementException:
                    pass



不知道你说的死循环是在哪里,初步判断如果没有保存内容应该是try里有错误导致都走的是
except NoSuchElementException:
                    pass
你可以在pass这里输出信息。另外你需要设置条件跳出while True,否则会一致运行
#3
夜莺不会唱歌2020-10-09 16:25
回复 2楼 fall_bernana
嗯嗯,好嘞,我尝试一下,谢谢您
1