此文僅作清單下載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()