首页 > 编程语言 >boss直聘自动投递(python+selenium)

boss直聘自动投递(python+selenium)

时间:2024-07-19 16:51:49浏览次数:13  
标签:XPATH 直聘 python selenium driver element handles div find

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.service import Service

# ChromeDriver 和 Chrome 浏览器的路径
chrome_driver_path = r'C:\Users\Administrator\AppData\Local\Google Chrome\Chromebin\chromedriver.exe'
chrome_binary_path = r'C:\Users\Administrator\AppData\Local\Google Chrome\Chromebin\chrome.exe'

# 创建 ChromeOptions 对象
options = webdriver.ChromeOptions()
options.binary_location = chrome_binary_path
options.add_experimental_option("detach", True)
options.add_argument('--ignore-certificate-errors')
options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])

# 创建 Service 对象
service = Service(chrome_driver_path)

# 创建 WebDriver 对象
driver = webdriver.Chrome(service=service, options=options)

driver.get("https://www.zhipin.com/shenzhen/?sid=sem_pz_bdpc_dasou_title")
time.sleep(2)
#点击注册登陆
# driver.find_element(".user-nav .btns .btn-outline").click()
login = driver.find_element(By.XPATH, '/html/body/div[1]/div[1]/div[1]/div[4]/div/a').click()
bossType = input("手机号登录请输入1 微信登录请输入2:")
if bossType.isdigit():
    if bossType=='1':
        #输入登陆的手机号
        phone = input("请输入手机号")
        driver.find_element(By.XPATH,"./html/body/div/div/div[2]/div[2]/div[2]/div[1]/div[1]/div/span[2]/input").send_keys(phone)
        #获取验证码
        driver.find_element(By.XPATH, '//*[@id="wrap"]/div/div[2]/div[2]/div[2]/div[1]/div[2]/div/div[1]').click()
        time.sleep(5)
        # #点击完成验证

        # driver.find_element(By.XPATH,'/html/body/div/div/div[2]/div/div[2]/div[1]/div[2]/div/span/div').click()
        time.sleep(3)
        #输入验证码
        yzm = input("请输入验证码")
        #输入验证码
        driver.find_element(By.XPATH,"/html/body/div/div/div[2]/div/div[2]/div[1]/div[2]/div/span/input").send_keys(yzm)
        #点击登协议 .login-policy-wrapper >  .agree-policy-wrapper
        driver.find_element(By.XPATH,"/html/body/div/div/div[2]/div[2]/div[2]/div[2]/span/input").click()
        #点击登陆
        driver.find_element(By.XPATH,"/html/body/div/div/div[2]/div[2]/div[2]/div[1]/div[3]/button").click()
        time.sleep(10)

    elif bossType=='2':
        driver.find_element(By.XPATH,"/html/body/div/div/div[2]/div[2]/div[2]/div[1]/div[4]/a").click()
        time.sleep(10)

else:
    print("请输入数字")

# 打印当前路径

# 尝试直接跳转

# 判断元素是否存在
handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])
driver.get("https://www.zhipin.com/web/geek/job-recommend")

# try:
time.sleep(2)
driver.window_handles
test_element = driver.find_element(By.XPATH,"/html/body/div[1]/div[1]/div/div/div[1]")
# print("判断元素是否存在")
# d点击经常投递的简历类型
# driver.find_element(By.XPATH,"//*[@id='wrap']/div[2]/div[1]/div/div[1]/a[3]/span").click()
# 获取职位列表
list_tab =driver.find_elements(By.XPATH,"//*[@id='wrap']/div[2]/div[2]")

# 开始循环
while True:
    handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
    driver.switch_to.window(handles[-1])
    list_tab[0].click()
    time.sleep(2)

    driver.find_element(By.LINK_TEXT,"立即沟通").click()
    # WebDriverWait(driver, 20).until(EC.new_window_is_opened(handles))
    wins = driver.window_handles
    print(wins)                             # 打印当前所有窗口的句柄
    print(driver.current_window_handle)     # 打印当前窗口的句柄
    # popup = driver.find_element(By.CSS_SELECTOR, '.greet-boss-dialog')
    # mask = driver.find_element(By.CSS_SELECTOR, '.greet-boss-dialog')
# 如果弹出div是不可见的,可以等待它变为可见
    # wait = WebDriverWait(driver, 10)
    # wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.greet-boss-dialog')))
    mask_element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, '.greet-boss-dialog')))
    # 如果元素被找到并且是可见的,则遮罩层显示
    if mask_element:
        driver.find_element(By.XPATH,"/html/body/div[8]/div[2]/div[3]/a[2]").click()
        time.sleep(2)
        driver.get("https://www.zhipin.com/web/geek/job-recommend")
        time.sleep(2)
        handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
        driver.switch_to.window(handles[-1])
        # driver.find_element(By.XPATH,"/html/body/div[1]/div[2]/div[1]/div/div[1]/a[3]/span").click()
        # test_element = driver.find_element(By.XPATH,"/html/body/div[1]/div[1]/div/div/div[1]")
        # try:
        time.sleep(2)
        # driver.window_handles
        list_tab =driver.find_elements(By.XPATH,"//*[@id='wrap']/div[2]/div[2]")
        time.sleep(2)

    else:
        print("遮罩层没有显示")

# except:
#     print('异常说明')

  

标签:XPATH,直聘,python,selenium,driver,element,handles,div,find
From: https://www.cnblogs.com/Allen-Xiebro/p/18311824

相关文章

  • Python网络爬虫从入门到实战
    什么是爬虫?所谓爬虫,其本质是一种计算机程序,它的行为看起来就像是蜘蛛在网上面爬行一样,顺着互联网这个“网”,一条线一条线地“爬行”。所以爬虫在英文中又叫作“Spider”,正是蜘蛛这个单词。爬虫能做什么?电商分析抓取天猫、京东、淘宝等电商网的评论及销量数据,对各种商......
  • python里面加载js代码
    有一段js代码constCryptoJS=require("crypto-js")functionl(t,e){returnt.toString().toUpperCase()>e.toString().toUpperCase()?1:t.toString().toUpperCase()==e.toString().toUpperCase()?0:-1}functionu(t){for(vare=Ob......
  • 用pandas查看牛客网用户数据(python练习)
    现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔):Nowcoder_ID:用户IDLevel:等级Achievement_value:成就值Num_of_exercise:刷题量Graduate_year:毕业年份Language:常用语言你可以使用pandas打开文件,偷偷看一下里面的内容,请输出你看......
  • Python:SQLAlchemy 2.0 库使用教程
    SQLAlchemy2.0版本检查importsqlalchemysqlalchemy.__version__建立连接-engine任何SQLAlchemy应用程序的开始都是一个称为Engine的对象。此对象充当连接到特定数据库的中心源,既提供一个工厂,又提供一个称为连接池的存储空间,用于这些数据库连接。用法:engine=crea......
  • python 数据类型
    python的常见基本数据类型Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典不可变数据类型(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据类型(3个):List(列表)、Dictionary(字典)、Set(集合)。python一切皆是对象类型指的也是对象的类型不......
  • python 爬虫技术 第02节 基础复习
    Python基础复习Python是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些Python基础概念的复习:1.数据类型Python支持多种内置数据类型,包括:数字(int,float,complex)字符串......
  • python-加密的病历单(赛氪OJ)
    [题目描述]小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中......
  • python之初识函数(函数的使用、可变长度参数*args和**kwargs、return的作用),了解函数的
    文章目录前言1、函数1.1函数的本质1.2定义函数1.3调用函数1.4深入解析函数1.5定义函数的完整语法1.5.1参数1.5.1.1参数的分类(位置、默认、关键字、可变长度)1.5.1.2参数的书写顺序1.5.2关键字:return前言本篇文章的目的是带领大家从零开始认识函数,作为函数......
  • ubuntu16.04安装python3.7
    二.安装python3.7本次python3.7使用源码安装安装环境sudoapt-getinstallzlib1g-devlibbz2-devlibssl-devlibncurses5-devlibsqlite3-dev libreadline-devtk-devlibgdbm-devlibdb-devlibpcap-devxz-utilslibexpat1-dev liblzma-devlibffi-devlibc6-dev源......
  • Python小白菜鸟从入门到精通
    前言Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版......