from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By from time import sleep import time import json import auth import requests import main # webdriver 下载地址:http://chromedriver.storage.googleapis.com/index.html # 放置于:把文件存放在python根目录下,例如:C:\xxx\Python\Python38下 def get_detail(url_login, url_detail): options = webdriver.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) # options.add_argument(r'--headless') # # options.add_argument(r'user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome') # # options.add_argument('--disable-gpu') browser = webdriver.Chrome(options=options) try: wait = WebDriverWait(browser, 15) browser.maximize_window() browser.implicitly_wait(3) # 设置等待3秒后打开目标网页 browser.implicitly_wait(3) # 登录页面 browser.get(url=url_login) auth.add_cookie(browser) # 进入数据详情页 browser.get(url_detail) sleep(10) if not auth.check_login(browser): print('登录失败') send_wechat_info("抖音线索登录失败") return # 进入数据详情页 # browser.get(url_detail) sleep(5) while True: if time.localtime().tm_hour == 0: # 这个时间点停止 break # 切换线索推荐tab 为了刷新 click_sales_clue_push(browser) sleep(5 * 60) # 停止5分钟 # click_sales_clue_list(browser) browser.get(url_detail) # 抓取数据 # get_table(browser) click_page(browser) # 退出前更新一次cookie auth.record_cookie(browser) sleep(60 * 60*2) # 停止5分钟 browser.quit() except Exception as e: print('err_detail') print(e) browser.quit() return # 1:姓名,2:电话,3:线索创建时间,4:互动类型,5:线索类型,6:最新互动记录,7:线索渠道,8:来源抖音号,9:分配状态 # 10:自动定位城市,11:手动填写地域,12:通话状态,13:最近互动时间,14:来源抖音号类型 key_dic = {1: "name", 2: "phone", 3: "create_time", 4: "status_interact", 5: "status_clue", 6: "new_interact", 7: "clue_channel", 8: "from_douyin", 9: "status_distribution", 10: "city", 11: "city_hand", 12: "status_call", 13: "last_time", 14: "from"} # 点击线索推送 def click_sales_clue_push(browser): print("点击线索推荐") try: browser.find_element(By.ID, "PSalesCluePush").click() except: print("没有找到线索管理tab") sleep(5) # 点击线索管理 def click_sales_clue_list(browser): browser.find_element(By.ID, "PSalesClueList").click() print("点击线索管理") sleep(5) # 判断是否需要分页 def click_page(browser): page_items = browser.find_elements(By.CLASS_NAME, "leads-pager-item") num = len(page_items) if num <= 3: print("只有1页") get_table(browser) return for page in range(1, num - 3): page_items[num - 1].click() sleep(10) get_table(browser) # 读取数据 def get_table(browser): # tr html的结构如下示例: #