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

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

一、写在前面

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

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

二、准备工作

1、使用的软件

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

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

2、使用的模块

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

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

三、大致流程

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

四、代码展示

1、爬虫部分

  1. from selenium import webdriver # 导入模块
  2. from selenium.webdriver.common.keys import Keys
  3. import csv # 保存csv表格数据模块
  4. import time # 时间模块
  5. # mode='w' 写入(覆盖) a 追加写入(不会覆盖) wb 二进制写入 b 二进制模式 图片 视频 音频 特定格式文件
  6. f = open('招聘数据全国_2.csv', mode='a', encoding='utf-8', newline='')
  7. # 1. 全部选中内容
  8. # 2. ctrl + R 勾选上 正则.*
  9. # 3. 通过正则表达式匹配替换数据
  10. csv_writer = csv.DictWriter(f, fieldnames=[
  11. '标题',
  12. '地区',
  13. '薪资',
  14. '经验',
  15. '公司名',
  16. '公司领域',
  17. '福利',
  18. '详情页',
  19. ])
  20. csv_writer.writeheader() # 写表头
  21. # selenium 爬取的速度相对而言会比较慢 >>> 模拟人的行为去操作浏览器
  22. # 极大程度减少被反爬 其次 如果某网站有JS逆向加密 requests 爬取虽然快, 但是对于加密的网站
  23. driver = webdriver.Chrome() # 实例化一个浏览器对象
  24. # 程序员做东西, 其实不在乎过程, 只要结果 你只要能够实现一些东西就可以了 除非有特定需求
  25. driver.get('https://www.zhipin.com/c100010000/?query=python&ka=sel-city-100010000')
  26. # 输入我们想要搜索的职位名字
  27. # 通过xpath语法或者css选择器语法
  28. # 除了模拟点击之外, 还可以 操作键盘事件
  29. # 给一个隐式等待 等10秒 等网页数据加载完就可以了
  30. # time.sleep(10) 死等 一定要等够10秒钟
  31. driver.implicitly_wait(10) # 为了等待网页把元素都加载出来 加载完毕就运行下面的代码
  32. # driver.find_element_by_css_selector('.ipt-search').send_keys('python') # 通过css选择器找寻element元素面板里面数据内容
  33. # driver.find_element_by_css_selector('.ipt-search').send_keys(Keys.ENTER) # 通过css选择器找寻element元素面板里面数据内容
  34. # driver.find_element_by_css_selector('.btn.btn-search').click() # 通过css选择器找寻element元素面板里面数据内容
  35. # driver.implicitly_wait(10)
  36. # driver.find_element_by_css_selector('#filter-box > div > div.condition-box > dl > dd > a:nth-child(3)').click()
  37. def get_job_info():
  38. lis = driver.find_elements_by_css_selector('.job-list li') # elements 获取多个标签数据 element 获取一个
  39. # print(lis) # for 遍历提取列表每一个元素
  40. for li in lis:
  41. title = li.find_element_by_css_selector('.job-name a').text # 标题
  42. area = li.find_element_by_css_selector('.job-area').text # 城市
  43. money = li.find_element_by_css_selector('.job-limit .red').text # 薪资
  44. exp = li.find_element_by_css_selector('.job-limit p').text # 经验
  45. company = li.find_element_by_css_selector('.company-text .name a').text # 经验
  46. company_type = li.find_element_by_css_selector('.company-text p a').text # 经验
  47. desc = li.find_element_by_css_selector('.info-desc').text # 经验
  48. # https://www.zhipin.com/job_detail/edb7de1d2f9a442e1nJ_3dW9EFpQ.htm
  49. href = li.find_element_by_css_selector('.job-name a').get_attribute('href') # 详情页url地址
  50. # 用selenium 为了求稳 还不如直接多线程 框架
  51. dit = {
  52. '标题': title,
  53. '地区': area,
  54. '薪资': money,
  55. '经验': exp,
  56. '公司名': company,
  57. '公司领域': company_type,
  58. '福利': desc,
  59. '详情页': href,
  60. }
  61. csv_writer.writerow(dit)
  62. print(title, area, money, exp, company, company_type, desc, href)
  63. for page in range(1, 101):
  64. print(f'正在获取第{page}页的数据内容')
  65. time.sleep(1)
  66. get_job_info()
  67. next_page = driver.find_element_by_css_selector('.next')
  68. if next_page:
  69. next_page.click()
  70. else:
  71. print('没有了')
  72. driver.quit() # 退出浏览器

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

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

相关文章