我应该先提到我对python和selenium还很陌生,所以我对它们都不太了解。
我想做的是:
- 每秒钟检查一次我关注的电报频道是否发出了新消息。我在浏览器上打开了电报网站,并使用自定义标志打开,这样我就不需要每次都用电报登录。
到目前为止,我所做的是查看包含所有消息文本的类im_message_text
,并获取列表中的最后一个。
源码
注意“strong”标签只是标题存储在文本消息中的位置,这就是我用来比较所有内容的地方:
def getItemsInfo1(self):
try:
iteminfo1 = WebDriverWait(self.driver, 4).until(
EC.presence_of_element_located((By.CLASS_NAME, 'im_message_text')))
list3 = self.driver.find_elements_by_class_name("im_message_text")
list33 = list3[-1]
list4 = list33.find_element_by_tag_name("strong")
list4txt = list4.text
return list4txt
except:
print("Nothing is found")
字符串
接下来我做的是另一个相同的代码,它在开始处有一个time.sleep(1)
,给予消息出现的时间,我使用下面的while循环比较2:
while Main.getItemsInfo1() == Main.getItemsInfo2():
print("No new messages. Try number ", count)
print(Main.getItemsInfo1(), Main.getItemsInfo2())
count += 1
型
到目前为止,只要有一条新消息,代码输出就会突出显示这两个方法具有不同的文本,但它仍然没有结束while循环,并继续说没有任何新消息。
有人知道怎么帮忙吗?
2条答案
按热度按时间u0njafvf1#
字符串
当你调用getItemsInfo1()的时候,你是在再次调用这个方法,所以不能保证print语句中的get值和while中的值是一样的,所以可以这样使用:
型
上面的代码将确保您具有相同的值,因为您将值存储到变量中,然后验证它。
zhte4eai2#
你甚至不需要使用telegram web或selenuim,让我们让它更容易:
字符串
只需记住更改
TelegramClient
中的变量,您可以从Telegram网站接收API_ID,API_HASH.它们应该是这样的:
型