сценарий очистки адреса электронной почты не находит все электронные письма в папке - PullRequest
0 голосов
/ 24 октября 2018

У меня есть код ниже.Он использует селен и Beautifulsoup для входа в мою учетную запись электронной почты Yahoo, а затем перейти к определенной папке и захватить все адреса электронной почты отправителей в этой папке.Я знаю, что в папке около 1000 писем, но скрипт возвращает только 100 писем.Я новичок в селене и BeautifulSoup, кто-нибудь знает, если код ниже будет возвращать только адреса электронной почты из сообщений, которые отображаются на странице?Если так, может кто-нибудь предложить, как я могу получить остальные письма в папке?Или есть что-то еще, что я не ловлю?

код:

import pandas as pd
import numpy as np

import os

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

Options

options = Options()

chrome_options = Options() 
options.add_argument('headless') #downlod Chrome driver.exe 
driver = webdriver.Chrome(executable_path=os.path.abspath("/Users/username/Desktop/Stuff/Continuing_Education/Recommenders/chromedriver"), chrome_options=chrome_options)

#re allows for matching text with regular expressions (including through BeautifulSoup)
#dateutil.parser provies .parse() to convert plain text dates in a variety of formats into datetime objects
import re, dateutil.parser
#BeautifulSoup provide a model for the source HTML
from bs4 import BeautifulSoup

#Webdriver is interface to the selected browser (PhantomJS)
from selenium import webdriver
#Ability to select values in HTML <select> tags
from selenium.webdriver.support import select
import time


from selenium.webdriver.common import action_chains, keys


#system
#JSON for language agnostic output
try:
    import simplejson as json
except ImportError:
    import json


#id for email <input>
EMAIL_ID =      'login-signin'
#id for password <input>
PASSWORD_ID =   'login-passwd'
#id for login button
LOGIN_ID =      'LoginButton'




login_url='https://login.yahoo.com/?.src=ym&.lang=en-US&.intl=us&authMechanism=primary&done=https%3A%2F%2Fmail.yahoo.com%2Fd&eid=100&add=1'

email='madeup@yahoo.com'
password=‘fake1’


# provide login email

from selenium.webdriver.support.ui import WebDriverWait

#driver = webdriver.Firefox()
driver.get(login_url)

assert 'Next' in driver.page_source
action = action_chains.ActionChains(driver)

# input email address and click next button
action.send_keys(email+keys.Keys.ENTER)


# action.send_keys(password+keys.Keys.ENTER)

action.perform()


# password
psswd_url='https://login.yahoo.com/account/challenge/password?.src=ym&.lang=en-US&.intl=us&authMechanism=primary&done=https%3A%2F%2Fmail.yahoo.com%2Fd&add=1&display=login&yid=username&sessionIndex=Qg--&acrumb=8eRX3U0n'


driver.get(psswd_url)

assert 'login-passwd' in driver.page_source
action = action_chains.ActionChains(driver)

# input email address and click next button
action.send_keys(password+keys.Keys.ENTER)


# action.send_keys(password+keys.Keys.ENTER)

action.perform()


recruit_url='https://mail.yahoo.com/d/folders/86'

tstsoup = BeautifulSoup(driver.page_source)


rec_emails=[]

for row in range(len(tstsoup.find_all('div',{'data-test-id':'senders'}))):
    rec_emails.append(tstsoup.find_all('div',{'data-test-id':'senders'})[row].find_all('span')[0]['title'])


len(rec_emails)

вывод:

100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...