利用selenium爬取boss直聘

正在通过boss直聘求职,然后见网上有需求boss直聘的职位大数据的,就简单写了一下,发现boss直聘的反爬机制还是比较友好的,首先不需要登陆就可以获取所有的职位信息,其次如果想要避过boss反爬成功访问,使用selenium完全可以直接访问,也就意味着如果使用requests的话,只要仿造一下请求头就可以完成,其中需要注意一下的是,boss直聘对爬虫此类的辨别主要体现在看访问的速率,笔者在完成爬虫时,大概一个ip可以访问3到4页,如果访问速度慢一点的话,也许可以更多,所以最好是可以构造一下ip池,几个ip协同访问就可以完成爬虫,再次把代码放一下吧,和原先一样核心代码我隐藏了,需要的话call我。
上一篇呢写过一个爬取淘宝的代码,有想看的也可以看一下。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
import requests
import csv

chromeOptions = webdriver.ChromeOptions()
# 设置代理
chromeOptions.add_argument("--proxy-server=http://117.93.19.224:4232 ")
driver = webdriver.Chrome(chrome_options = chromeOptions)
driver.get('https://www.zhipin.com/?sid=sem_pz_sgpc_title')
#选址部分
cxxx='java'
driver.find_element_by_xpath("//*[@id='wrap']/div[4]/div/div/div[1]/form/div[2]/p/input").clear()  #清空搜索
driver.find_element_by_xpath("//*[@id='wrap']/div[4]/div/div/div[1]/form/div[2]/p/input").send_keys(cxxx)  #键入内容
driver.maximize_window()   #放大
driver.find_element_by_xpath("//*[@id='wrap']/div[4]/div/div/div[1]/form/button").click()  #点击查找
time.sleep(30)
driver.find_element_by_xpath("//*[@class='btn-allcity']").click()  #点击全部城市   
time.sleep(2)
driver.find_element_by_xpath("//li[text()='ABCDE']").click()  #点击BCDEFG
time.sleep(2)
driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div/ul[2]/li[2]/ul/li[1]/span").click() #北京
driver.find_element_by_xpath("//*[@id='filter-box']/div/div[1]/div/form/div[1]/p/input").clear()  #清空搜索
driver.find_element_by_xpath("//*[@id='filter-box']/div/div[1]/div/form/div[1]/p/input").send_keys(cxxx)  #键入内容
driver.find_element_by_xpath("//*[@id='filter-box']/div/div[1]/div/form/button").click()  #点击查找
#选址部分结束
time.sleep(3)
#接下来进入遍历状态
a=driver.find_elements_by_xpath("//span[@class='job-name']") #a是遍历的总体内容
suma = len(a) #限制遍历次数
i=0
fy=open('text.txt')#刚开始打开时的翻页控制
ym=fy.read()
ym=int(ym)
fy.close()  #翻页控制
while(i<=suma):
    time.sleep(3)
    all_handle = driver.window_handles
    driver.switch_to_window(all_handle[-1]) #切换完成
    a=driver.find_elements_by_xpath("//span[@class='job-name']") #a是遍历的总体内容
    if(i==suma):
        js="var q=document.documentElement.scrollTop=100000"    #翻到页尾
        driver.execute_script(js)    #翻到页尾
        driver.find_element_by_xpath("//a[@ka='page-next']").click() #a是遍历的总体内容   //*[@id="main"]/div/div[2]/div[2]/a[6]
        i=0
        continue
    a[i].click()
    i=i+1
    all_handle = driver.window_handles
    driver.switch_to_window(all_handle[-1]) #切换到子网页页柄
    #对于其中的内容进行提取
    try:
        print("隐藏")
    except:
        print("出错了!")
    driver.close()
  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值