youpc529 发表于 2019-11-22 10:26

boss直聘批量向牛人询问求职意向

本帖最后由 youpc529 于 2019-11-22 10:42 编辑

使用boss直聘没法按照自己想要的条件筛选“牛人”(如按照年龄或性别),想批量筛选和打招呼又要花钱,如下图:

于是自己折腾了,此代码以“年龄”和“是否沟通过”为条件进行筛选,并对符合条件的“牛人”批量询问求职意向。

```
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import *
import random
from time import sleep

#浏览器设置
chrome_options = Options()
chrome_options.add_argument('lang=zh_CN.UTF-8')
UserAgent='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
chrome_options.add_argument('User-Agent=' + UserAgent)
driver = webdriver.Chrome(r'D:\chromedriver.exe',options=chrome_options)
driver.maximize_window()
driver.implicitly_wait(10)

#扫码登录
login_link = 'https://login.zhipin.com/?ka=header-login'
driver.get(login_link)
driver.find_element_by_xpath('//*[@id="wrap"]/div/div/div/div/form/div/span').click()
sleep(2)
#点击推荐牛人
driver.find_element_by_xpath('//*[@id="main"]/div/div/dl/dt/a').click()
#选择岗位
def select(x):
    dropdown = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/span')
    ActionChains(driver).click(dropdown).perform()
    selectxpath = '/html/body/div/div/div/div/div/div/div/ul/li['+str(x)+']'
    select = driver.find_element_by_xpath(selectxpath)
    position = select.text
    select.click()
    highLightElement(driver,select)
    print("现在筛选的岗位是:"+position)
    sleep(1)
#打招呼,询问求职意向
def grdo(i):
    try:
      #greetxpath = "/html/body/div/div/div/div/div/div/div/div/div/ul/li["+str(i)+"]/div/div/div/div/span/button"
      greetxpath = '//*[@id="recommend-list"]/div/ul/li['+str(i)+']/div/div/div/div/span/button'
      greetele = driver.find_element_by_xpath(greetxpath)
      greet = greetele.text
      agexpath = "/html/body/div/div/div/div/div/div/div/div/div/ul/li["+str(i)+"]/div/div/div/div/div/span"
      ageele = driver.find_element_by_xpath(agexpath)
      agestr = ageele.text
      age = int(agestr)      
      if 18 < age < 31 and greet != "继续沟通":
            highLightElement(driver,ageele)
            rt = random.randint(0,5)
            highLightElement(driver,greetele)
            sleep(rt)
            driver.execute_script("arguments.click();", greetele)
            driver.execute_script('window.scrollBy(0,200)')
            print("第%d个符合,"%i,end="")
            print("年龄%s."%agestr)
      else:
            print("第%d个不符合,"%i,end="")
            print("年龄%s."%agestr)
            driver.execute_script('window.scrollBy(0,200)')
    except ValueError:
            print("第%d个没有数据"%i)
#每个岗位筛选68人
def grf():
    k=2
    while k<70:
      try:
            grdo(k)
      except NoSuchElementException:
                if k == 6:
                  print("忽略boss的升级提醒")
                  pass
                else:
                  print("网页没加载成功,第%d个没有数据,等待重新加载"%k)
                  driver.execute_script("var q=document.documentElement.scrollTop=10000")
                  sleep(1)
                  grdo(k)
      k +=1
#嵌入网页,需要切换
def task(y):
    select(y)
    driver.switch_to.frame("syncFrame")
    grf()
#设置要筛选的岗位
i = 2
while i < 13:
    if i == 3 or i ==7 or i ==8:
      i += 1
      continue
    task(i)
    print("完成一个岗位。")
    driver.switch_to.default_content()
    i += 1
```

youpc529 发表于 2019-12-19 22:18

changjiang 发表于 2019-12-17 19:13
sel速度感觉还行,还有就是少了highLightElement方法

通过print就知道运行过程,需要用highLightElement方法吗?感谢指教{:1_893:}

youpc529 发表于 2019-12-19 22:17

主骑士 发表于 2019-11-22 12:00
(⊙o⊙)哦,这思路厉害了,顶一个
这个确实很多人都很需要的。

现在需要多听听别人的需求,有需求才知道怎么去学习python,谢谢!

主骑士 发表于 2019-11-22 12:00

(⊙o⊙)哦,这思路厉害了,顶一个
这个确实很多人都很需要的。

ccc8 发表于 2019-11-27 16:54

用起来应该很实在的   我也蛮需要的

yike911 发表于 2019-12-4 23:27

18559691035 发表于 2019-12-10 10:23


谢谢分享,求软件,谢谢

ccc8 发表于 2019-12-17 13:30

很需要这个麻烦教下 谢谢 。有偿没问题的联系我qq:648441721

changjiang 发表于 2019-12-17 19:13

sel速度感觉还行,还有就是少了highLightElement方法

youpc529 发表于 2019-12-19 22:19

ccc8 发表于 2019-12-17 13:30
很需要这个麻烦教下 谢谢 。有偿没问题的联系我qq:648441721

可以互相交流下:handshake,学习
页: [1] 2 3 4
查看完整版本: boss直聘批量向牛人询问求职意向