Python - 如何在不使用 url 的情况下阅读网页内容?

Python - How to read content of web page without using url?

我正在尝试在 Python 中制作一个程序来登录 gmail 并阅读收件箱页面。这是我使用 Selenium 和 urllib2 尝试过的(我是新手):

from requests import session
from selenium import webdriver
import getpass
import urllib2



def gmail_login(username, passw) :
    with session() as c :
        webpage = r'https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier'

        driver = webdriver.Chrome('C:\Users\chromedriver_win32\chromedriver.exe')
        driver.get(webpage)

        driver.implicitly_wait(10)

        driver.find_element_by_name('Email').send_keys(username)

        driver.find_element_by_name('signIn').click() # Click 'Next' button after entry of email id.

        driver.find_element_by_id('Passwd').send_keys(passw)

        driver.find_element_by_id('signIn').click() # Click 'Sign In' button after entry of password.

        url = driver.current_url

        readPage(url)

def readPage(url):
    print url

    fName = "gmail_file.html"
    response = urllib2.urlopen(url)
    html = response.read()
    f = open(fName,"w")
    f.write(html)
    f.close()

gmail_login('username', 'password')

我的登录部分是正确的,但我无法阅读收件箱页面。 在我的代码中,我基本上是使用 url 重新打开收件箱页面,然后读取它并将其保存在 html 文件中。但是在我的 html 文件中,我得到的只是登录页面!我猜直接使用其 url 打开收件箱页面是不允许的并且受到保护。

所以我正在寻找一种方法来阅读网页(任何,不仅是 gmail)的内容,其 url 不是该目的所必需的。 (我知道阅读网页的唯一方法是使用 urlopen(),它需要 url。)是否有用于此目的的函数或库?

您可以使用 Charlie Guo's gmail package。安装后,您可以像这样使用它:

import gmail

g = gmail.login("devansh_sharma@gmail.com", "password123")

emails = g.inbox().mail(unread=True)

for email in emails:
    email.fetch()
    header_from = email.headers['From']
    subject = email.headers['Subject']
    body = email.body
    [... do something cool with your gmail...]

这将比屏幕抓取更可靠、更简单。

您可以试用 Python imaplib 软件包,使用 imap 协议阅读和管理您的所有邮件。

您可以找到代码示例here