首页 > 解决方案 > AttributeError:模块'http'没有属性'client'

问题描述

我正在尝试编写一个脚本来告诉我未读电子邮件的数量。但我得到了 AttributeError。

我的代码

import requests
from bs4 import BeautifulSoup

class email:
    def unread():
        url = 'https://mail.google.com/mail/u/0/#inbox'
        headers_A = {'User-Agent': 'Mozilla/5.0 (X11; Linux armv7l; rv:78.0) Gecko/20100101 Firefox/78.0'}
        site = requests.get(url, headers=headers_A)
        info = BeautifulSoup(site, 'html.parser')
        unread = info.find('div', attrs={'class', 'bsU'}).text
        return unread

email = email()
unread = email.unread()
print(unread)

错误代码

AttributeError: module 'http' has no attribute 'client'

谢谢!

标签: pythonbeautifulsouppython-requests

解决方案


使用网络爬虫解决这个问题是一个显而易见的想法,因为您通常会通过浏览器检查您的电子邮件。

然而,要制作这样一个网络爬虫,需要的不仅仅是一个get对收件箱 url 的 HTTP 请求。

据我所知,您需要通过谷歌在线身份验证,这非常复杂,然后您需要管理会话和 cookie 以在您进行抓取时保持登录状态。

实际上有一个更简单的方法来解决这个问题。

在网页抓取中,您使用的是 HTTP 协议,但在发送电子邮件时,使用的是另一种更简单且完全独立于 HTTP 的协议。它是 IMAP。

这意味着您不需要使用bs4or requests,您只需连接到 Google 的 IMAP 服务器即可。

这是一个教程,它将向您解释如何制作一个简单的 python IMAP 客户端。

您还需要在您的 google 帐户上允许安全性较低的应用程序才能正常工作。你可以在这里做


推荐阅读