from info import username,password,account2,password2 from selenium.webdriver.common.by import By from selenium.webdriver import Chrome from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup import time import smtplib from email.mime.text import MIMEText from email.header import Header def crawl(): chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "localhost:9222") #此处端口保持和命令行启动的端口一致 #使用ChromeDriver创建一个浏览器实例。 driver = Chrome(options=chrome_options) driver.get('https://login.taobao.com') # 等待页面加载完成 time.sleep(2) # # 初次登录 # # 输入用户名和密码 # driver.find_element(By.ID,'fm-login-id').send_keys(username) # driver.find_element(By.ID,'fm-login-password').send_keys(password) # # time.sleep(4) # # 点击登录按钮 # driver.find_element(By.CLASS_NAME,'fm-button.fm-submit.password-login').click() # #多次登陆 # driver.find_element(By.ID,'fm-login-password').send_keys(password) # time.sleep(3) # driver.find_element(By.CLASS_NAME,'fm-button.fm-submit.password-login').click() #快速登陆 driver.find_element(By.CLASS_NAME,'fm-btn').click() #等待登录完成 time.sleep(10) # 搜索指定商品 driver.find_element(By.CLASS_NAME,'search-combobox-input').send_keys('西装') time.sleep(2) driver.find_element(By.CLASS_NAME,'btn-search').click() #切换到新窗口 handles=driver.window_handles driver.switch_to.window(handles[-1]) time.sleep(3) #数据提取,打印 soup=BeautifulSoup(driver.page_source,'html.parser') title=[] price=[] titles=soup.find_all('div',class_='Title--title--jCOPvpf') for t in titles: title.append(t.text) prices=soup.find_all('div',style="margin-right: 8px;") for p in prices: price.append(p.text) print('{:^40}\t\t\t{:^2}'.format('商品名称','价格',chr(12288))) for i in range(len(price)): print('{:<20}\t{:<5}'.format(title[i],price[i])) return title,price def send_email(content): account = account2 #发件人邮箱地址 password = password2 #邮箱授权码 receiver = account2 #收件人地址 message = MIMEText(content,'plain', 'utf-8') # 实例化一个MIMEText邮件对象,该对象需要写进三个参数,分别是邮件正文,文本格式和编码 subject = ('淘宝数据') message['Subject'] = Header(subject) #实例化了一个Header邮件头对象 message['From'] = Header(account) # 设置发件人地址 message['To'] =Header(receiver) # 设置收件人地址 try: server = smtplib.SMTP_SSL('smtp.qq.com', 465) # 连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号。 server.login(account, password) server.sendmail(account, [receiver], message.as_string()) print('邮件发送成功') server.quit() except Exception as e: print ('邮件发送失败') print(e) def main(): title,prices= crawl() temp='' for i in range(len(prices)): temp=temp+title[i]+'\t'+str(prices[i])+'\n' send_email(temp) main()