当前位置:首页 期刊杂志

基于Jsoup爬虫的BOSS直聘信息爬取

时间:2024-05-04

张鹏

摘要:当前,就业成为人们生产生活的重要主题,随着互联网的飞速发展,招聘网站成为求职者就业的主要通道,网站中的招聘职位虽然丰富,但较难迅速获取岗位中的重要信息。文章采取Jsoup网络爬虫技术,爬取了BOSS直聘网站中天津市的Java岗位信息,并使用POI技术将岗位中的重要信息经过数据处理保存为本地Excel文件,便于求职者直观地对所搜索的岗位进行筛选判断,具有良好的实用价值。

关键词:Jsoup;网络爬虫;Boss直聘

中图分类号: TP392  文献标志码:A

0 引言

随着互联网的迅猛发展,就业方式已由传统的线下招聘逐步转变为高效快捷的网络求职,通过各类招聘网站寻找岗位成为人们求职的主要方式,其中,BOSS直聘凭借其独创的“找工作,与老板谈”模式成为求职网站,特别是互联网行业求职的主流网站之一。虽然通过网站可以便捷地查询到岗位的需求信息,但是,人们在这些冗余的岗位需求信息中很难找到贴合自身的岗位信息,且不容易掌握某个岗位的薪资平均水平、分布地域等重要数据。

为了快速获取某类型岗位的全部招聘信息,便于用户快速筛选薪资、地域等实用数据,本文采用Jsoup的爬虫技术,以java作为岗位关键字,将BOSS直聘网站上的主要招聘信息逐页爬取并保存到本地Excel文件中,同时进行数据预处理,方便求职者直观地对所搜索的岗位进行研究与选择。

1 招聘信息爬取研究现状

国内已存在较多学者使用爬虫技术爬取招聘网站的案例。例如,孙暖等[1]采用Scrapy框架,基于Python语言设计爬虫采集方案并实现了面向猎聘、拉钩等招聘类网站的数据采集,最终成功获取50 000余条数据。梅杰[2]采用网络爬虫技术获取智联招聘网站中的互联网行业数据,并对获取的数据集进行删除、转换。毛遂等[3]采取Python爬虫对51Job招聘网站上的Python相关岗位进行爬取,并对爬取的本地数据进行可视化分析。

为解决招聘网站信息不直观的问题,本文将对所用技术进行分析,设计爬虫模型并完成代码实现,以便呈现出清晰直观的招聘岗位现状,为相关岗位的人才提供良好的职业决策判断。

2 相关技术分析

2.1 网络爬虫的原理

随着互联网的飞速发展,网络成为数据与信息的载体中心,挖掘这些数据背后的意义尤为重要。网络爬虫是一种程序代码或者脚本文件[4],可以遵循一定的规则自动获取网站上的数据。

2.2 Jsoup技术简介

Jsoup是一款HTML解析器,拥有十分方便的API处理HTML文档,比如,参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等,因此,可以使用Jsoup快速地爬取页面数据。

2.3 POI技术简介

Apache POI是用Java编写的免费开源的跨平台的Java API,提供对Microsoft Office格式档案读和写的功能。POI也用于操作Excel,其中,Excel中的工作簿、sheet、行和单元格都可以在POI中找到相應的对象进行操作[7]。

3 爬取招聘信息模型设计与实现

招聘信息爬取功能的核心是首先通过携带请求对目标网页发出请求并取得服务器响应,接着将获得的响应内容(Document)通过Jsoup进行解析,封装为实体类对象的集合,其中,翻页功能使用递归调用方法实现。在获取到所有的招聘数据后,对数据进行预处理,并将其保存为本地Excel文件。爬取流程如图1所示。

3.1 分析网页URL,确定访问路径

BOSS直聘是一个动态网页,需要分析其URL来实现岗位关键字、城市、页码等参数的填充。该网站岗位搜索首页URL为https://www.zhipin.com/web/geek/job,是不变部分,其后需要添加3个参数,分别为岗位关键字query、城市关键字city和页码page。

将query设置为java,city设置为天津,城市代码为101030100,访问第一页时,page参数可省略,因此可以得到天津市java岗位的招聘信息URL为:

https://www.zhipin.com/web/geek/job?query=java&city=101030100

使用Jsoup.connect(url)获取连接,携带header发起请求,将网页保存在Document对象中。

3.2 分析网页结构

访问招聘信息URL,得到天津市java岗位的第一页,页面内有30个招聘信息。利用谷歌浏览器的F12开发者工具查看所要的爬取内容在网页上对应的标签,可以得到它的属性、HTML代码等。对网页进行分析发现,每一个招聘信息都是以

  • 的列表标签保存,而岗位名称、薪资、地点等重要信息都放于li这个节点下。因此,调用Jsoup提供的API,使用CSS选择器获取所有招聘信息,封装为网页中的元素集合。

    Listlist =      doc.getElementsByClass("job-card-wrapper");

    3.3 将网页内容封装为对象集合

    本文定义了一个核心方法getBossTJList(String url, String area),用于将网页内容封装为招聘信息List。其中url参数为招聘信息URL,area参数为要搜索的岗位关键字,设置该参数旨在方便求职者随时切换求职岗位。

    依据网页元素集合List,每一个Element代表一个招聘信息,通过对其进行for循环,提取主要的招聘信息如岗位名称、薪资、公司名称、地理位置、学历要求等。部分代码如下:

    //岗位名称

    String job_title = e.getElementsByClass("job-title").text();

    //薪资

    String salary = e.getElementsByClass("salary").text();

    //地理位置

    String job_address = e.getElementsByClass("job-area").text();

    本文使用Job实体类对象存储招聘信息,每获取一个Element中的主要招聘数据,就将它们封装为一个Job对象。设置全局静态变量集合job_list,将Job对象依次添加进集合中。

    3.4 递归实现翻页功能

    BOSS直聘网站的页码部分位于的分页对象中,在该div模块中存在“页数+2个”标签,多出来的2个代表“上一页”和“下一页”按钮。在某页爬取结束后,获取当前页面的页码,并将其加1来指定下一页面。当前所在页的标签,拥有特定的class="selected"属性。

    int currentPage =

    Integer.parseInt(page.get(0).getElementsByClass("selected").text());

    currentPage+=1;

    当前页获取完毕后,应判断是否需要继续递归调用getBossTJList()方法获取下一页;若当前页为尾页,则停止调用。将标签的数量减去2,可直接获取总页数。核心代码如下:

    Thread.sleep(3000);

    if (currentPage<=lastPage){

    String href = "&"+page+"="+currentPage;

    getBossTJList(Commons.BOSS_JOBURL+href,area);

    }

    采用递归来逐页遍历招聘信息,最终可以得到300条数据。手工降低执行频率,Thread.sleep(3000)是每3秒执行一次调用,通过模拟人点击的方式达到反爬虫的目的。

    3.5 保存Excel数据

    3.5.1 设置文件路径

    定义了一个getExcel(String area)方法,area参数为要搜索的岗位关键字,设置该参数用来进行本地Excel文件按岗位命名,命名规则为"D:\\天津-"+area+".xls"。

    3.5.2 遍历招聘信息,保存文件

    调用HSSFWorkbook的构造方法,新建一个表格文件。调用其createSheet(sheetname)方法创建sheet,本文中sheet名称为岗位关键字area。使用sheet对象的createRow(rownum)方法创建第一行,第一行中分别添加序号、岗位名称、薪资、公司名称、工作地址、经验要求、学历要求7列。遍历job_list对象,填充Excel表格对象,使用HSSFWorkbook的write()方法写入本地,即可保存Excel文件。

    3.6 数据的预处理

    经爬取后的招聘信息中,薪资显示为“5K~8K”,将工资单位采用“元/月”进行统一,并对工资范围区间用其均值进行取代,如“5K~8K”,显示为6 500元/月,清晰直观,便于求职者筛选岗位。根据数据清洗原理对空缺值进行处理[8]。最终呈现的Excel文件如图2所示。

    4 结语

    面对日趋严峻的就业形势,仅凭线下的宣讲招聘、单一的網络简历投递已经不能满足人们迫切的就业需求。本文选用互联网就业网站BOSS直聘,其岗位丰富,但无法对招聘数据进行提取和便捷筛选。利用Jsoup技术对BOSS直聘的数据进行爬取,整合公司位置、薪资单位等有效信息。整个过程快速便捷,针对性强,能够将较为冗余的信息变得更加精简,符合当前大数据时代的发展趋势。

    参考文献

    [1]孙暖,曹小平,刘军.基于Python的互联网招聘数据采集技术[J].信息与电脑(理论版),2020(18):161-163.

    [2]梅杰.基于关联规则的网络招聘信息挖掘与分析[D].贵阳:贵州大学,2021.

    [3]毛遂,毛红霞.基于51job网站招聘信息的爬取与分析——以Python技术岗位为例[J].网络安全技术与应用,2021(4):47-49.

    [4]熊艳秋,严碧波.基于jsoup爬取图书网页信息的网络爬虫技术[J].电脑与信息技术,2019(4):61-63.

    [5]王晓东.Apache POI组件批量操作Excel文件的应用探索[J].金融科技时代,2019(6):47-49.

    [6]刘萍,刘瑞文,胡秀丽.基于图书借阅行为的数据预处理方法研究[J].内蒙古科技与经济,2020(19):121-122,161.

    (编辑 何 琳)

    BOSS Zhipin information crawl based on Jsoup crawlers

    Zhang  Peng

    (Tianjin Electronic Information Vocational and Technical College, Tianjin 300350, China)

    Abstract:  At present, employment has become an important theme of peoples production and life. With the rapid development of the Internet, recruitment websites have become the main channel for job seekers to obtain employment. Although there are many recruitment positions in the websites, it is difficult to quickly obtain important information in the positions. The article adopts Jsoup web crawler technology to crawl the Java post information of Tianjin in BOSS Zhipin website, and uses POI technology to process and save the important information in the post into local Excel file, which is convenient for job seekers to screen and judge the searched posts intuitively, and has good practical value.

    Key words: Jsoup; web crawler; BOSS Zhipin

  • 免责声明

    我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!