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()

效果

原文地址:https://www.cnblogs.com/hxlinux/p/15619963.html