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

时间:2015-07-06 03:20:13

标签: python selenium gmail urllib2

我正在尝试用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文件中,我得到的只是登录页面!我猜测不允许使用其网址直接打开收件箱页面并受到保护。

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

2 个答案:

答案 0 :(得分:1)

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

您可以找到代码示例here

答案 1 :(得分:0)

您可以使用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...]

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