0
emailcontent = []
def getEmails(self):
    self.browser.get("https://outlook.live.com/mail/0/inbox")
    time.sleep(3)
    content = self.browser.find_elements_by_css_selector("._2ZDUqsleGa-jar5wAYvVzV") 
    for c in content:
        c.click() # opens the email
    content = self.browser.find_element_by_dir("Itr").text 
    # div dir="Itr" only common tag for email contents
    emailcontent.append(content)

getEmails()

txt = ""
for a in emailcontent:
    txt += "{:<30} \n".format(a)
    with open("new.txt", "a") as output:
        output.write(txt)

os.startfile('new.txt')   

我有上面的代码,前面的代码基本上进入了我的hotmail/outlook帐户,没有任何问题。我希望这部分打开每封电子邮件并将内容保存到 txt 文件,但它没有发生。电子邮件内容的唯一常见标签是 div dir="Itr" ,我不知道如何找到_element_...它们一一对应。可能我需要使用循环,但我做不到。有人想帮忙吗?

4

1 回答 1

1

这里

content = self.browser.find_elements_by_css_selector("._2ZDUqsleGa-jar5wAYvVzV") 

你必须改进定位器。否则第一个匹配元素不是你想要的。
取而代之:

content = self.browser.find_elements_by_css_selector("div._2ZDUqsleGa-jar5wAYvVzV") 

展开每封电子邮件后,您可以使用div.rps_b62css_selector 检索内容。
所以你的代码可以是:

content = self.browser.find_elements_by_css_selector("div._2ZDUqsleGa-jar5wAYvVzV") 
for c in content:
    c.click()
    time.sleep(1)
    content = self.browser.find_element_by_css_selector("div.rps_b62").text 
    emailcontent.append(content)

获取内容并将其附加到列表应该在for循环内完成。
让内容正确打开也应该有延迟。
如上。

于 2021-08-19T17:31:53.757 回答