python - 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'
谢谢!
解决方案
使用网络爬虫解决这个问题是一个显而易见的想法,因为您通常会通过浏览器检查您的电子邮件。
然而,要制作这样一个网络爬虫,需要的不仅仅是一个get
对收件箱 url 的 HTTP 请求。
据我所知,您需要通过谷歌在线身份验证,这非常复杂,然后您需要管理会话和 cookie 以在您进行抓取时保持登录状态。
实际上有一个更简单的方法来解决这个问题。
在网页抓取中,您使用的是 HTTP 协议,但在发送电子邮件时,使用的是另一种更简单且完全独立于 HTTP 的协议。它是 IMAP。
这意味着您不需要使用bs4
or requests
,您只需连接到 Google 的 IMAP 服务器即可。
这是一个教程,它将向您解释如何制作一个简单的 python IMAP 客户端。
您还需要在您的 google 帐户上允许安全性较低的应用程序才能正常工作。你可以在这里做
推荐阅读
- java - 使用 ArrayList 的冒泡排序有什么问题?
- sql - 使用 Ruby 变量进行 Ruby on Rails 数据库查询
- sql-server - 计算 3 个表中的多次出现并创建/插入到第 4 个表中
- python - 如何将 tkinter 中 Entry 小部件的结果文本斜体?
- swift - 重新安装的应用程序使用 cloudkit 保留以前的核心数据
- android - 如何在android Q中使用ssid和密码连接WIFI?
- python - 熊猫隐藏一列,留在df中,但不显示在html表中
- vba - 通过 vba 读取 html 文件
- shell - 如何在 Makefile 中正确编写 for 循环
- sql - 如何计算(BS,HRA,CONV,BA,WASH,MEDICAL)这些除EmployeeId之外的所有行的总和