123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # coding:utf-8
- import os
- from time import sleep
- import datetime
- import openpyxl
- import rarfile as rarfile
- import requests
- from selenium import webdriver
- # 设置Chrome浏览器选项
- from selenium.common import exceptions
- from selenium.webdriver.chrome.service import Service
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.wait import WebDriverWait
- from imgcode_ak import image_code
- def rename_week_file(new_dir, current_time, rar_name):
- files = os.listdir(rar_name)
- for dir in files:
- print(dir.title())
- if os.path.isdir(dir.title()):
- dir_list = os.listdir(rar_name + "/" + dir.title())
- for f in dir_list:
- print(f.title())
- if f.title().find("周度数据") != -1:
- new_name = f'{new_dir}/{current_time}_week.xlsx'
- os.rename(rar_name + "/" + dir.title() + "/" + f.title(), new_name)
- return
- return
- if __name__ == "__main__":
- # python+selunium定位已打开的浏览器
- # 创建一个 Chrome WebDriver 实例
- options = webdriver.ChromeOptions()
- # options.add_argument("headless")
- # options.add_argument('--headless')
- options.add_argument('--disable-gpu')
- options.add_argument('--no-sandbox')
- # 谷歌浏览器运行的默认调试端口:先用以下命令启动浏览器
- # 找到谷歌浏览器的程序地址,开启一个新的端口,并设置一个文件夹来保存浏览器的数据
- # /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/Users/xiexiaoyuan/data/selenium/automationProfile
- # --remote-debugging-port值,可以指定任何打开的端口
- # --user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
- #
- # 此时会打开一个浏览器页面,我们输入目标网址,输入账号密码,登录成功。
- # 登录之后,以后都不需要登录,它会把你这次登录的信息记入到 --user-data-dir指定的目录下
- # 后面你只需要python + selenium + webdriver定位到这个已经登录的浏览器进行操作就可以啦
- options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
- # 修改下载地址
- # save_to_dir = '/Users/xiexiaoyuan/Downloads'
- save_to_dir = r'D:\download\excel'
- options.add_argument("--download.default_directory="+save_to_dir)
- options.add_argument('--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, '
- 'like Gecko) Chrome/118.0.5993.70 Safari/537.36')
- options.add_argument(" window-size=1920,1080")
- # s = Service(executable_path='/Users/xiexiaoyuan/chromedriver_mac64_114/chromedriver')
- s = Service(executable_path='D:\download\chromedriver119-win64\chromedriver.exe')
- driver = webdriver.Chrome(service=s, options=options)
- # driver.maximize_window()
- driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
- "source": """
- Object.defineProperty(navigator, 'webdriver', {
- get: () => undefined
- })
- """
- })
- driver.get('https://data.yongyizixun888.com/')
- sleep(3)
- account = driver.find_element(By.XPATH, '//*[@id="dr_member_info"]/a[1]').text
- print(account)
- # 下载涌溢日度数据库
- sleep(1)
- a = driver.find_element(By.XPATH, '/html/body/div[4]/div[1]/div[2]/div[2]/a')
- print(a.get_attribute("href"))
- a.click()
- # 下载涌溢完整数据库
- sleep(2)
- b = driver.find_element(By.XPATH, '/html/body/div[4]/div[1]/div[2]/div[3]/a')
- print(b.get_attribute("href"))
- b.click()
- sleep(30)
- # 获取当前时间,并将其格式化为指定的形式
- current_time = datetime.datetime.now().strftime("%Y-%m-%d")
- # 查找文件并重命名
- os.chdir(save_to_dir)
- files = filter(os.path.isfile, os.listdir(save_to_dir))
- files = [os.path.join(save_to_dir, f) for f in files] # add path to each file
- files.sort(key=lambda x: os.path.getmtime(x))
- day_file = files[-1]
- # new_dir = '/Users/xiexiaoyuan/Downloads/yongyi'
- new_dir = r'D:\data\yongyi'
- if day_file.title().find("日度") == -1:
- day_file = files[-2]
- if day_file.title().find("日度") != -1:
- new_name = f'{new_dir}/{current_time}_day.xlsx'
- os.rename(day_file.title(), new_name)
- else:
- print("未找到日度下载文件")
- week_file = files[-2]
- if week_file.title().find("周度") == -1:
- week_file = files[-1]
- print(week_file.title())
- if week_file.title().find("周度") != -1:
- filename = week_file.title()
- index = filename.find(".Rar")
- rar_name = filename[:index]
- # 解压缩
- rar_file = rarfile.RarFile(filename, 'r')
- rar_file.extractall(rar_name)
- rar_file.close()
- rename_week_file(new_dir, current_time, rar_name)
- else:
- print("未找到周度下载文件")
|