parent
d8aaf88cc4
commit
56a095dec4
@ -0,0 +1,87 @@
|
||||
from info import username,password,password2
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver import Chrome
|
||||
from selenium.webdriver.chrome.options import Options
|
||||
import smtplib
|
||||
import time
|
||||
from bs4 import BeautifulSoup
|
||||
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 = username #邮箱地址
|
||||
password = password2 #邮箱授权码
|
||||
receiver = username #收件人
|
||||
|
||||
message = MIMEText(content,'plain', 'utf-8')
|
||||
subject = ('淘宝数据')
|
||||
message['Subject'] = Header(subject)
|
||||
message['From'] = Header(account) # 设置发件人地址
|
||||
message['To'] =Header(receiver)
|
||||
|
||||
try:
|
||||
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
|
||||
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()
|
Loading…
Reference in new issue