翼度科技»论坛 编程开发 python 查看内容

简单的用Python采集猎聘招聘数据内容,并做可视化分析!

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
现在刚毕业,很多小伙伴因为找不到工作或者找了很多也不喜欢,再有懒一点的,太热了根本不想出门到处找。
所以今天给大家分享如何在家就能找到心仪工作
使用Python批量采集招聘数据,进行可视化分析,轻松找到心仪工作!
话不多说,我们直接开始~
准备工作

软件工具

  • Python 3.8
  • Pycharm
  • 谷歌浏览器
  • 谷歌驱动
selenium --> 自动化测试模块
模拟人的行为去操作浏览器
手动操作

  • 打开浏览器
  • 输入网址
  • 找到我们需要的数据内容
  • 手动复制粘贴放到表格文件
模块使用
  1. selenium  # pip install selenium==3.141.0 自动化测试 操作浏览器
  2. csv  # 保存数据 保存csv文件
复制代码
 
win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)
数据获取部分代码

打开浏览器
浏览器驱动选择以及下载:

  • 查看浏览器版本
  • 驱动版本选择和你浏览器版本最相近的
  • 驱动文件, 直接放到你python安装目录里面
主要代码
  1. driver = webdriver.Chrome()
  2. # 访问网站
  3. # 完整代码+视频讲解+软件工具领取
  4. # 直接加这个抠裙:592539176
  5. driver.get(
  6.     'https://www.liepin.com/zhaopin/?inputFrom=www_index&workYearCode=0&key=python&scene=input&ckId=rn8762mqhk78fi3d9fiqzzoobk7f66u9&dq=')
  7. """
  8. 找到我们需要的数据内容
  9.     前提 -> 你要让网页元素<数据>加载出来
  10.     通过元素定位, 获取数据内容 <通过标签提取数据>
  11. """
  12. # 设置延时, 让网页元素加载完整
  13. driver.implicitly_wait(10)  # 隐式等待, 只要网页加载出来就运行下面的代码
  14. time.sleep(1)  # 死等, 一定要等够
  15. # 获取所有招聘信息对应div标签
  16. divs = driver.find_elements_by_css_selector('.job-list-box div .job-card-left-box')
  17. # print(driver) # webdriver.Chrome() 返回selenium对象
  18. # print(divs)  # 返回列表, 列表里面元素是selenium对象
  19. for div in divs:
  20.     """
  21.     提取具体数据内容, 提取每个div标签里面所包含的数据内容
  22.         .job-title-box div.ellipsis-1
  23.     """
  24.     # 职位
  25.     title = div.find_element_by_css_selector('.job-title-box div.ellipsis-1').text
  26.     # 城市
  27.     city = div.find_element_by_css_selector('.job-title-box span.ellipsis-1').text
  28.     salary = div.find_element_by_css_selector('.job-salary').text
  29.     # 列表推导式
  30.     info_list = [i.text for i in div.find_elements_by_css_selector('.job-labels-box .labels-tag')]
  31.     print(info_list)
  32.     exp = info_list[0]
  33.     edu = info_list[1]
  34.     labels = ','.join(info_list[2:])
  35.     company = div.find_element_by_css_selector('.company-name').text
  36.     company_type = div.find_element_by_css_selector('.company-tags-box span').text
  37.     company_num = div.find_element_by_css_selector('.company-tags-box span:last-of-type').text
  38.     href = div.find_element_by_css_selector('.job-detail-box a').get_attribute('href')
  39.     dit = {
  40.         '职位': title,
  41.         '城市': city,
  42.         '薪资': salary,
  43.         '经验': exp,
  44.         '学历': edu,
  45.         '技术点': labels,
  46.         '公司': company,
  47.         '公司领域': company_type,
  48.         '公司规模': company_num,
  49.         '详情页': href,
  50.     }
  51.     csv_writer.writerow(dit)
  52.     print(dit)
复制代码
 
保存表格
  1. f = open('python.csv', mode='w', encoding='utf-8', newline='')
  2. csv_writer = csv.DictWriter(f, fieldnames=[
  3.     '职位',
  4.     '城市',
  5.     '薪资',
  6.     '经验',
  7.     '学历',
  8.     '技术点',
  9.     '公司',
  10.     '公司领域',
  11.     '公司规模',
  12.     '详情页',
  13. ])
  14. csv_writer.writeheader()
复制代码
 
可视化展示

读取文件
  1. import pandas as pd
  2. df = pd.read_csv('data.csv')
  3. df.head()
复制代码
 
python职位学历需求分布
  1. from pyecharts import options as opts
  2. from pyecharts.charts import Pie
  3. from pyecharts.globals import CurrentConfig, NotebookType
  4. CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
  5. c = (
  6.     Pie()
  7.     .add(
  8.         "",
  9.         [
  10.             list(z)
  11.             for z in zip(
  12.                 edu_type,
  13.                 edu_num,
  14.             )
  15.         ],
  16.         center=["40%", "50%"],
  17.     )
  18.     .set_global_opts(
  19.         title_opts=opts.TitleOpts(title="python职位学历需求分布"),
  20.         legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
  21.     )
  22.     .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
  23.    
  24. )
  25. c.load_javascript()
复制代码
 
python职位学历需求分布
  1. edu_num = df['经验'].value_counts().to_list()
  2. edu_type = df['经验'].value_counts().index.to_list()
  3. c = (
  4.     Pie()
  5.     .add(
  6.         "",
  7.         [
  8.             list(z)
  9.             for z in zip(
  10.                 edu_type,
  11.                 edu_num,
  12.             )
  13.         ],
  14.         center=["40%", "50%"],
  15.     )
  16.     .set_global_opts(
  17.         title_opts=opts.TitleOpts(title="python职位经验需求分布"),
  18.         legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
  19.     )
  20.     .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
  21.    
  22. )
  23. c.render_notebook()
复制代码
 
python职位城市分布
  1. edu_num = df['城市'].str[:2].value_counts().to_list()
  2. edu_type = df['城市'].str[:2].value_counts().index.to_list()
  3. c = (
  4.     Pie()
  5.     .add(
  6.         "",
  7.         [
  8.             list(z)
  9.             for z in zip(
  10.                 edu_type,
  11.                 edu_num,
  12.             )
  13.         ],
  14.         center=["40%", "50%"],
  15.     )
  16.     .set_global_opts(
  17.         title_opts=opts.TitleOpts(title="python职位城市分布"),
  18.         legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
  19.     )
  20.     .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
  21.    
  22. )
  23. c.render_notebook()
复制代码
 
python公司领域分布
  1. edu_num = df['公司领域'].value_counts().to_list()
  2. edu_type = df['公司领域'].value_counts().index.to_list()
  3. c = (
  4.     Pie()
  5.     .add(
  6.         "",
  7.         [
  8.             list(z)
  9.             for z in zip(
  10.                 edu_type,
  11.                 edu_num,
  12.             )
  13.         ],
  14.         center=["40%", "50%"],
  15.     )
  16.     .set_global_opts(
  17.         title_opts=opts.TitleOpts(title="python公司领域分布"),
  18.         legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
  19.     )
  20.     .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
  21.    
  22. )
  23. c.render_notebook()
复制代码
 
好了今天的分享就到这结束了,咱们下次再见!

来源:https://www.cnblogs.com/hahaa/p/17566494.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具