from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.edge.service import Service
from selenium.webdriver.common.action_chains import ActionChains
import time
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium.webdriver.edge.service import Service as EdgeService
edge_options = webdriver.EdgeOptions()
edge_options.add_argument("--disable-gpu")
edge_options.add_argument("--no-sandbox")
edge_options.add_argument("--start-maximized")
try:
# 初始化 WebDriver
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()), options=edge_options)
except Exception as e:
print(f"无法自动安装 EdgeDriver,请手动下载并指定路径:{e}")
exit(1)
try:
# 打开目标网址
driver.get("https://www.liepin.com/zhaopin/?city=020&dq=020&pubTime=¤tPage=0&pageSize=40&key=ai%E6%95%B0%E6%8D%AE%E6%A0%87%E6%B3%A8&suggestTag=&workYearCode=0&compId=&compName=&compTag=&industry=&salaryCode=&jobKind=&compScale=&compKind=&compStage=&eduLevel=&otherCity=&ckId=psk8lcvanicaty6550ncdmotof2hweba&skId=psk8lcvanicaty6550ncdmotof2hweba&fkId=psk8lcvanicaty6550ncdmotof2hweba&scene=condition&sfrom=search_job_pc&suggestId=")
# 等待用户输入 y 开始执行
user_input = input("请输入 y 开始执行自动化操作:")
if user_input.lower() != 'y':
print("操作取消。")
driver.quit()
exit()
wait = WebDriverWait(driver, 10)
action_chains = ActionChains(driver)
while True:
# 等待 job-list-box 容器出现
job_list_box = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "job-list-box")))
job_containers = job_list_box.find_elements(By.XPATH, "./*")
for container in job_containers:
# 鼠标移动到二级容器并确保可见
action_chains.move_to_element(container).perform()
time.sleep(1)
try:
# 等待“继续聊”按钮并点击
continue_chat_button = container.find_element(By.XPATH, ".//*[contains(text(), '聊一聊')]")
action_chains.move_to_element(continue_chat_button).click().perform()
time.sleep(1)
# 等待聊天窗口并点击 SVG 按钮
chat_window = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "__im_basic__root")))
svg_button = chat_window.find_element(By.CSS_SELECTOR, ".__im_basic__contacts-title svg")
action_chains.move_to_element(svg_button).click().perform()
time.sleep(1)
except Exception as e:
print("在处理二级容器时出错:", str(e))
# 翻页逻辑
try:
# 检查是否为禁用状态
if "aria-disabled" in next_page_button.get_attribute("outerHTML"):
print("已到达最后一页,退出循环")
break
pagination_box = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "list-pagination-box")))
next_page_button = pagination_box.find_elements(By.TAG_NAME, "li")[-1]
action_chains.move_to_element(next_page_button).click().perform()
time.sleep(2)
except Exception as e:
print("翻页时出错:", str(e))
break
finally:
driver.quit()