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<mpl=default<mplcache=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
我正在尝试在 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<mpl=default<mplcache=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