• python selenium自动化爬取Boss直聘岗位


    环境准备

    安装selenium

    查看chrome的版本

    下载相应的chromedriver驱动

    http://npm.taobao.org/mirrors/chromedriver/
    http://chromedriver.storage.googleapis.com/index.html
    

    然后将chromedriver放到python的安装目录即可

    结构分析

    观察结构发现页面url为:www.zhipin.com + 城市的拼音
    https://www.zhipin.com/wuhan/

    找到搜索框

    找到提交按钮

    找到岗位详情

    代码

    from selenium import webdriver
    import csv
    
    fileName = "招聘数据.csv"
    jobName = input("请输入您的意愿岗位:\n")
    cityName = input("请输入您的意愿城市(拼音):\n")
    url = f'https://www.zhipin.com/{cityName}/'
    headerRow = [
        '岗位名称',
        '工作地点',
        '起薪',
        '薪资区间',
        '学历要求',
        '联系人',
        '公司名称',
        '业务范围',
        '岗位职责/方向',
        '福利待遇',
    ]
    
    def createTable():
        with open(fileName, 'a', encoding='utf-8-sig', newline='') as csvfile:
            csv_writer = csv.DictWriter(csvfile, fieldnames=headerRow)
            csv_writer.writeheader()  # 写入表头数据
    
    
    def getOneJobPage(driver, writer):
        jobInfos = driver.find_elements_by_class_name('job-primary')  # 模拟点击岗位详情
        for info in jobInfos:  # 迭代取出数据
            print(info.text)  # 打印岗位详情
            strText = info.text
            arrTxt = strText.split("\n")
            tmp = arrTxt[2].split("-")  # 将字符串变成数组
            arrTxt.insert(2, tmp[0])
            writer.writerow(arrTxt)  # 将数组写入表格
    
    
    def main():
        driver = webdriver.Chrome()
        driver.get(url)  # 获取url
        searchEle = driver.find_element_by_class_name('ipt-search')  # 找到输入框
        searchEle.send_keys(jobName)  # 输入框中填上工作名称
        btnSearch = driver.find_element_by_css_selector('button.btn.btn-search')
        btnSearch.click()  # 模拟点击搜索按钮
    
        pageS = 1
        while pageS < 50:  # page循环
    
            with open(fileName, 'a', encoding='utf-8-sig', newline='') as csvfile:
                # 打开文件csv文件
                writer = csv.writer(csvfile)
    
                getOneJobPage(driver, writer)  # 调用获取岗位页面函数
                pageS += 1
                driver.implicitly_wait(30)  # 隐式等待,30秒钟内只要找到了元素就开始执行,未找到则超时;
                btnnext = driver.find_element_by_css_selector("a.next")
                # 寻找下一页按钮
                btnnext.click()  # 点击按钮
    
                # csvfile.close() #关闭文件
    
    if __name__ == "__main__":
        createTable()
        main()
    
    

    效果

  • 相关阅读:
    codeforces 261B Maxim and Restaurant(概率DP)
    洛谷P3066 [USACO12DEC]逃跑的Barn (线段树合并)
    洛谷P1600 天天爱跑步(线段树合并)
    AtCoder
    SPOJ10606 BALNUM
    洛谷P3567[POI2014]KUR-Couriers(主席树+二分)
    洛谷P2633 Count on a tree(主席树上树)
    【.Net边角料系列】1-单例模式(我真不是你想的那样)
    生成二维码的开源工具对比(附源码了呀!)
    你所不知道的linq(二)
  • 原文地址:https://www.cnblogs.com/hxlinux/p/15619963.html
Copyright © 2020-2023  润新知