Python爬虫:招聘岗位千千万,看我把它们统统爬下来进行可视化分析,康康有没有适合你的岗位

x33g5p2x  于2021-11-23 转载在 Python  
字(2.8k)|赞(0)|评价(0)|浏览(412)

一、写在前面

这不一年过的差不多了,又临近过年了,对于明年要找工作的兄弟们,想好找什么工作了吗?

今天来试试爬一下某著名广告铺满了电梯的招聘网站,对岗位进行可视化数据分析,为明年做做准备。

二、准备工作

1、使用的软件

  • python 3.8
  • pycharm 2021专业版
  • 谷歌浏览器 / 火狐浏览器 (千万不要下载错了, 搞了个什么双核浏览器)

驱动安装教程:谷歌浏览器驱动安装
驱动下载地址:驱动下载地址
驱动下载的版本要和你的浏览器版本信息最相近那个

2、使用的模块

  • selenium pip install selenium(第三方模块, 是需要去安装, 指定模块版本进行安装)
  • csv

不会安装模块和安装慢看这篇:如何安装python模块, python模块安装失败的原因以及解决办法

三、大致流程

1、爬虫的基本流程
2、可视化分析展示
3、selenium模块的使用
4、保存csv

四、代码展示

1、爬虫部分

from selenium import webdriver  # 导入模块
from selenium.webdriver.common.keys import Keys
import csv  # 保存csv表格数据模块
import time # 时间模块

# mode='w' 写入(覆盖) a 追加写入(不会覆盖) wb 二进制写入 b 二进制模式 图片 视频 音频 特定格式文件
f = open('招聘数据全国_2.csv', mode='a', encoding='utf-8', newline='')
# 1. 全部选中内容
# 2. ctrl + R 勾选上 正则.*
# 3. 通过正则表达式匹配替换数据
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '地区',
    '薪资',
    '经验',
    '公司名',
    '公司领域',
    '福利',
    '详情页',
])
csv_writer.writeheader() # 写表头
# selenium 爬取的速度相对而言会比较慢 >>> 模拟人的行为去操作浏览器
# 极大程度减少被反爬 其次 如果某网站有JS逆向加密 requests 爬取虽然快, 但是对于加密的网站
driver = webdriver.Chrome()  # 实例化一个浏览器对象
# 程序员做东西, 其实不在乎过程, 只要结果 你只要能够实现一些东西就可以了 除非有特定需求
driver.get('https://www.zhipin.com/c100010000/?query=python&ka=sel-city-100010000')
# 输入我们想要搜索的职位名字
# 通过xpath语法或者css选择器语法
# 除了模拟点击之外, 还可以 操作键盘事件
# 给一个隐式等待 等10秒 等网页数据加载完就可以了
# time.sleep(10) 死等 一定要等够10秒钟
driver.implicitly_wait(10)  # 为了等待网页把元素都加载出来 加载完毕就运行下面的代码
# driver.find_element_by_css_selector('.ipt-search').send_keys('python') # 通过css选择器找寻element元素面板里面数据内容
# driver.find_element_by_css_selector('.ipt-search').send_keys(Keys.ENTER) # 通过css选择器找寻element元素面板里面数据内容
# driver.find_element_by_css_selector('.btn.btn-search').click() # 通过css选择器找寻element元素面板里面数据内容
# driver.implicitly_wait(10)
# driver.find_element_by_css_selector('#filter-box > div > div.condition-box > dl > dd > a:nth-child(3)').click()
def get_job_info():
    lis = driver.find_elements_by_css_selector('.job-list li')  # elements 获取多个标签数据 element 获取一个
    # print(lis) # for 遍历提取列表每一个元素
    for li in lis:
        title = li.find_element_by_css_selector('.job-name a').text  # 标题
        area = li.find_element_by_css_selector('.job-area').text  # 城市
        money = li.find_element_by_css_selector('.job-limit .red').text  # 薪资
        exp = li.find_element_by_css_selector('.job-limit p').text  # 经验
        company = li.find_element_by_css_selector('.company-text .name a').text  # 经验
        company_type = li.find_element_by_css_selector('.company-text p a').text  # 经验
        desc = li.find_element_by_css_selector('.info-desc').text  # 经验
        # https://www.zhipin.com/job_detail/edb7de1d2f9a442e1nJ_3dW9EFpQ.htm
        href = li.find_element_by_css_selector('.job-name a').get_attribute('href')  # 详情页url地址
        # 用selenium 为了求稳 还不如直接多线程 框架
        dit = {
            '标题': title,
            '地区': area,
            '薪资': money,
            '经验': exp,
            '公司名': company,
            '公司领域': company_type,
            '福利': desc,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, area, money, exp, company, company_type, desc, href)

for page in range(1, 101):
    print(f'正在获取第{page}页的数据内容')
    time.sleep(1)
    get_job_info()
    next_page = driver.find_element_by_css_selector('.next')
    if next_page:
        next_page.click()
    else:
        print('没有了')

driver.quit()  # 退出浏览器

数据分析的代码有点长,私我吧。

对应视频教程:
用python把整个招聘网站都爬下来了,分析一下哪些公司福利比较好!

相关文章