You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.3 KiB

10 months ago
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()