网络爬虫技术主流编程语言分析

网络爬虫技术主流编程语言分析

摘要:每隔一段时间,国外多个专业网站会对编程语言进行排名,但这并不能反应国内市场对掌握不同编程语言技术人才的需求度。采用Python常用第三方库requests来爬取招聘网站信息,再通过pyecharts库生成数据图表,从而形象直观地看到我国不同城市间对主流编程语言职位热度。

关键词:Python网络爬虫;编程语言;国内职位热度

1编程语言排名

国际上的编程语言排行榜,比较有代表性有TIOBE和IEEESpectrum网站。TIOBE网站每月更新一次排名,主要依据全球资深软件工程师和IT相关企业提供的数据。IEEESpectrum虽一年一次,但提供多维度的参数供用户筛选,从而得到不同编程语言的世界排名[1]。两个站点反映的是国际软件行业对不同编程语言的热门程度,但并不能反映国内的实际情况。通过爬取国内知名人才网站的招聘信息,来获取近期各大城市对不同编程语言职位需求数量及相关数据。国内招聘网站众多,由于网页结构不同,因此爬取的规则也不同。选取拉钩网站为例,利用Python提供的第三方库requests爬取该网站的招聘信息并存入MySQL数据库。再通过pyecharts库生成编程语言在这些城市IT职位的排名数据图表。

2网络爬虫设计

2.1requests库。requests是基于Python开发的HTTP库。与urllib标准库相比,它不仅使用方便,而且能节约大量的工作。实际上,requests是在urllib的基础上进行了高度的封装,而且还支持一些其他的特性。例如,使用Cookie保持会话、自动确定响应内容的编码等,可以轻而易举地完成浏览器的爬取相关操作[2-3]。requests库中提供了如下常用的类:(1)requests.Request:表示请求对象,用于将一个请求发送到服务器。(2)requests.Response:表示响应对象,包含服务器对HTTP请求的响应。(3)requests.Session:表示请求会话,提供Cookie持久性、连接池和配置。requests类不仅能够重复地读取返回的数据,而且还能自动确定相应内容的编码。因为无须转换为URL路径编码格式来拼接成完整的URL路径等优点,所以可以极大程度的减少程序的代码量[3]。

2.2爬取过程。招聘数据是本次爬取的核心内容。parse方法利用requests库的相关方法从网站后台接口获取JSON数据,并筛选需要的招聘信息。关键代码如下。为了防止某些网站的反爬虫机制,这里采用了伪造请求头的方式去处理这个问题。添加特定的头信息Us-er-Agent(浏览器标识)与Referer(来源地址),使url请求更加贴近人工操作。通过变量formData配合for循环,动态获取30页的数据。其中requests.Session表示请求会话,提供Cookie持久性、连接池和配置。调用save自定义函数,将获取到的招聘信息,包括用人单位提供职位、薪资、要求学历、公司规模和地址等信息,存入MySQL数据库。

2.3生成数据图表。通过show()方法引入pyecharts模块,该模块简单的几行代码就可以将数据转成数据图,而且还是动态的。在本项目中,笔者安装了jupyter和pyechartsV1.0.0模块。在jupyter上直接调用实例,从数据库提取相关信息生成可视化的图表。方便用户更直观地查看。核心方法如下。由于篇幅限制,只选取7天内国内4个一线城市的5种编程语言职位信息,依次进行遍历爬取。一种语言在每个城市搜寻30个分类页,每页为15条数据,生成图1和表1。可以大致了解到编程语言在这些城市中的需求度。

3结语

通过以上方法,读者可以自行设置城市和编程语言的条件,找到编程语言职位在这些城市招聘信息受关注的程度。从而可以大致了解该区域对不同程序人才的需求度。通过对Python第三方库requests的分析和使用,完成了简单的网页爬取,对于Python强大的数据爬取功能将会在后期的文章中进行介绍。

参考文献

[1]白青海.基于大数据分析的计算机语言使用频度研究[J].内蒙古民族大学学报(自然科学版),2019,(11):485-488.

[2]冯成.面向岗位信息的分布式爬虫应用[J].无线互联科技,2020,(6):36-37.

[3]蔡振海,张静.基于Python的网络爬虫系统的设计与实现[J].电脑知识与技术,2019,(8):36-37.

作者:刘杨 单位:中山市技师学院