此文仅作清单下载Demo,完整的代码还有清单表格数据处理、数据上传数据库、成功或异常简报的邮件发送、日志记录…
#coding:utf-8
# 公用库
import os
import time
import datetime
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
# selenium操作库
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from scrapy.selector import Selector
import random
# Excel表格操作库
import xlrd
import xlwt
import re
from xlrd import open_workbook
from xlutils.copy import copy
import MySQLdb
from sqlOpera import sqlOpera
# 邮箱邮件发送
from fileHand import DataUpload
# 日志记录
from logRerd import logs
logs=logs()
logs.addLogs("打开浏览器",0)
class TableDown(object):
def selm(self):
try:
# 打开浏览器
browser = webdriver.Chrome()
# 打开窗口
browser.get('http://pub.alimama.com/')
ps="******"
sj="******"
browser.implicitly_wait(20)
logs.addLogs("切入登陆页",0)
browser.switch_to.frame("taobaoLoginIfr")
browser.find_element_by_xpath("//i[@id='J_Quick2Static']").click()
browser.find_element_by_xpath("//input[@id='TPL_username_1']").send_keys(sj)
time.sleep(random.randint(2,5))
browser.find_element_by_xpath("//input[@id='TPL_password_1']").send_keys(ps)
time.sleep(random.randint(1,5))
# 点击登陆
browser.find_element_by_xpath("//button[@id='J_SubmitStatic']").click()
# 切回当前
# browser.switch_to.default_content()
time.sleep(6)
logs.addLogs("进入联盟",0)
# 进入联盟
browser.find_element_by_xpath("//div[@class='right-logined']/a[@href='/myunion.htm']").click()
time.sleep(random.randint(2,5))
# 关闭SDK提醒
browser.find_element_by_xpath("//span[@class='dialog-ext-close-x']").click()
# 知道了
time.sleep(1)
browser.find_element_by_xpath("//span[@class='close-btn']").click()
# 点击左侧联盟产品
browser.find_element_by_xpath("//a[@href='#!/promo/self/items']").click()
time.sleep(3)
logs.addLogs("切入下载页面", 0)
browser.find_element_by_xpath("//div[@mx-click='downItem']/div[@class='list-down-area']").click()
time.sleep(3)
logs.addLogs("选择下来条件",0)
browser.find_element_by_xpath("//input[@mx-click='promoType{type:web}']").click()
# 选择推广位
browser.find_element_by_xpath("//input[@mx-click='zoneType{type:1}']").click()
time.sleep(1)
# 点击推广位名称下拉框
browser.find_element_by_xpath("//div[@id='J_zones_dropdown']").click()
time.sleep(1)
# 选择推广位名称下
browser.find_element_by_xpath("//span[@value='129958759']").click()
time.sleep(1)
# 确定下载
browser.find_element_by_xpath("//button[@mx-click='submit']").click()
logs.addLogs("开始下载", 0)
time.sleep(5)
logs.addLogs("监控下载进度", 0)
# browser.get("chrome://downloads/")
except Exception,e:
# print e
logs.addLogs("表单下载异常",9)
finally:
pass
# 判断现在完成状态,执行表单处理并上传
now = datetime.datetime.now()
dateNow = now.strftime('%Y-%m-%d')
fileUrl = u'C:*********' + dateNow + '.xls'
stateTf = False
stateTfs=True
startDown=time.time()
while not stateTf:
stateTf = os.path.exists(fileUrl)
time.sleep(15)
alTime=time.time() - startDown
if alTime>500:
stateTf=False
stateTfs=False
else:
logs.addLogs("已用时-" + str(time.time() - startDown),0)
if stateTfs:
logs.addLogs("下载用时--"+str(time.time()-startDown),0)
DataUpload().fileReads(fileUrl)
else:
# sendEmail().sdEmail("失败")
logs.addLogs("下载失败",9)
# 执行表单下载
# TableDown.selm()