林长谋 黄玮

摘要:互联网数据获取及分析是当前数据科学的一個重要部分。该文针对互联网中就业岗位数据获取与分析的过程基于Python构建了网络爬虫。并在通爬虫获取网络数据的基础上,对所获得的就业岗位数据进行预处理,最终可到供挖掘的数据。

关键词:Python;网络爬虫;数据分析

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2019)12-0006-02

开放科学(资源服务)标识码(OSID):

1 背景

随着信息技术的发展,大数据越来越成为热门的话题[1]。使用大数据技术对就业岗位市场进行数据的分析对于学生职业生涯的规划有较强的现实意义。而就业岗位的相关数据动态连续的创建于不同的人才市场,受数量多、分布广、格式不统一等因素的影响,不易采用人工进行数据的获取。因此也就更不利于相关信息的分析。为解决这一问题,本研究先针对性的进行网络爬虫[2]的设计,再基于分词技术[3]和TD-FID算法进行关键词的提取的统计。

2 网络爬虫的关键技术

爬虫是互联网时代用于获取主题内容的主流工具之一。其可从不同的站点获取预先设置好的主题内容。在本研究中使用Python,并调用BeautifulSoup、Requests等库及数据库技术,进行爬虫的构建。构建爬虫涉及的技术如下:

2.1 HTTP请求与响应与 URL

爬虫的工作原理基于http协议中的请求与响应机制[4]。在浏览器浏览某个网页时,需要使用HTTP协议将URL提交给服务器。服务器收到URL后根据URL中携带的信息处理将对方所请求的资源回传给浏览器端。

爬虫在运行时模拟浏览器与服务器的运行特征,模拟浏览器向服务器发送URL请求,接收对方的回复,并最终将接收到的数据转换成要保留的数据。由于互联网网页错综复杂,一次的请求与回复无法获取批量数据,因此需要对爬虫的流程进行规划设计,使之适应多页面跨页面的情况。

2.2 超文本语言

超文本语言[5]也称为HTML(Hypertext Markup Language),在该语言中规定了相关事项的标签,并采用配对标记的形式进行使用。例如为了表示一个表格,可以使用……进行表达。浏览器接收到服务器的回复内容即为采用HTML表达后的结果。其网页源码是一系列HTML代码,里面包含了一系列标签。在进行网络数据获取前,需要对目标网站的数据特征进行分析,此时就需要查看网页的HTML格式。

2.3 Web信息抽取

在获得目标网页的URL地址,通过请求可得到该网页内容。由于网页是HTML格式,中间嵌入了许多对于信息抽取不必要的标记。因此需要对数据进行一定的抽取。在具体Web页的抽取中,要根据页面的结构特点定位要抽取的信息。具体实践中,通过正则表达式可以高效的抽取具有固定特征的页面信息,准确性很高,而且由于现今的主流编程语言基本上都提供了操作正则表达式的封装API,所以可以很方便快捷地构建基于这种模式的web信息抽取系统。

3 爬虫的设计

对目标人才招聘网站进行分析,寻找其特点后决定采用带参数URL请求的方式,将所要查询的关键字传到服务器,由其搜索出满足条件的岗位数据。

基于上述特征,可进行爬虫的设计,其核心部分的流程如下:

Step 1:从初始页面开始爬取。

Step 2:解析网页内容,提取具体岗位信息的URL。

Step 3:将URL加入等解析队列。

Step 4:如果有下一页,则读取下一页,并转到Step 2.否则,转第5步。

Step 5:如果待解析队列不为空,则队列元素出队,并请求该元素对应的URL。

若待解析队列为空,则转Step 8

Step 6:解析回复内容,并进行Web信息提取,将岗位信息写入数据库。

Step 7:转Step 5

Step 8:结束。

4 数据的预处理

在爬虫的运行下,可获得大量的数据,为了解岗位数据的变化,便于进行数据挖掘,则需要对已经获取的数据进行预处理。

在数据库中保存的岗位信息数据除了有岗位名称、发布单位、发布时间、地点等内容外,关于岗位信息的数据包含在详情页中。由于详情页中的信息只进行了文本的提取,没有进一步的处理。因此在进行信息提取前需要进行文本的预处理。例如,一个岗位有如下要求:

(1)至少2年以上ASP.NE开发经验,深入了解.NET Framework框架;

(2)熟悉WEB开发流程,熟练掌握ASP.Net MVC、WebAPI框架;

(3)熟悉MS-SQL、MySql、Oracle等主流数据库;

……

对上述岗位要求进行分析,可知:岗位中的关键字与其他文档中的关键词不同。其他文档中的关键词由用词频的方式进行确认,而岗位要求中的关键词往往仅出现一次。另外,越是出现在文本前方的关键词就越重要。基于上述规律,使用Python的第三方工具包Gensim对岗位要求进行切片和停用词过滤,再按先后顺序排列,即可得到岗位要求中各要素的重要性序列。其中切片与停用词过滤的代码如下:

stoplist=open('stopword.txt','r',encoding="utf-8").read()

stoplist = set(w.strip() for w in stoplist)

segtexts=[]

for line in lines:

doc=[]

for w in list(jieba.cut(line,cut_all=True)):

if len(w)>1 and w not in stoplist:

doc.append(w)

segtexts.append(doc)

在采用上述代码进行分析后,便得求得该岗位信息的数据格式如表1所示:

5 结束语

在使用Python进行爬虫的设计后,在对所获得的文本使用Gensim进行分词处理和停用词过滤后,针对岗位信息中,关键字仅少量出现的情况,使用关键字出现的先后顺序设计重要性序列。最终完成数据的预处理工作。

参考文献:

[1] 温亮明, 张丽丽, 黎建辉. 大数据时代科学数据共享伦理问题研究[J]. 情报资料工作, 2019, 40(2): 38-44.

[2] 杨凌云. 主题网络爬虫关键技术的应用探讨[J]. 电脑编程技巧与维护, 2018(11): 33-35.

[3] 柳汨. 基于HTML语言的网页制作浅析[J]. 中小企业管理与科技: 上旬刊, 2016(1): 258.

[4] 冯佳捷, 王瑞. 中文分词技术对中文搜索引擎的查准率及查全率的影响[J]. 计算机光盘软件与应用, 2013, 16(6): 184, 259.

【通联编辑:谢媛媛】

python数据获取就业方向_基于Python的就业岗位数据获取与预处理相关推荐

  1. python软件开发电子产品测试方向_基于Python语言的自动测试系统通用软件平台实现...

    期 No.5 2019 年 3 月 Mar. 2019 收稿日期: 2018-05-06 稿件编号: 201805027 基金项目: 中国电科第十研究所发展基金 ( SSJ-1784 ) 作者简介: ...

  2. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计

    基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...

  3. 基于python的房地产数据分析_基于Python的数据分析

    转载 | CSDN 编辑 | 雷课小雷 下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念.数据分析流程.Python优势.常用模块的用途以及使用Python进行数据分析的学习方法及步骤 ...

  4. 基于python的影评数据分析_基于Python聚焦型网络爬虫的影评获取技术

    龙源期刊网 http://www.qikan.com.cn 基于 Python 聚焦型网络爬虫的影评获取技 术 作者:郭向向 郑嘉慧 苗学芹 来源:<时代金融> 2019 年第 11 期 ...

  5. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  6. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  7. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  8. python交通调查数据处理_基于Python的交通流数据清洗

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的交通流数据清洗 作者:李红梅 唐岚 来源:<电子技术与软件工程> 2016 年第 09 期 [关键词]交通 ...

  9. python兼职平台信号处理_基于Python的数字信号处理初步

    作者:许欢 来源:EETOP 行者无疆(论坛usrname:ICNO.1) 的博客 Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据 ...

最新文章

  1. Linux运维人员-服务器组成硬件基础
  2. 夏夏的php开发笔记开写啦
  3. 微信 php 接口 函数,PHP的json_encode函数应用到微信接口有关问题(include \uxxxx will create fail)...
  4. python爬虫代码提取图片中的文字_python识别图像并提取文字的实现方法
  5. 计算机视觉与深度学习 | 使用K均值聚类实现基于颜色的分割(matlab版)
  6. Spring运行期间配置文件解析返回
  7. LiveVideoStackCon音视频技术大会首次来到上海
  8. 数据库访问性能优化法则
  9. 【机器学习】监督学习--KNN(最近邻)算法
  10. input眼睛显示 vue_2019前端面试题汇总(主要为Vue)
  11. MongoDB 主从复制(主从集群 )
  12. 二维dtw算法matlab实现,下载的用MATLAB实现的DTW算法,不会用,跪求大神帮忙
  13. springboot仓库管理系统的设计与实现(含论文)
  14. 一个IP到底值多少钱
  15. 阿里云智能编码插件,更Cosy的开发体验
  16. 基于springboot的高校疫情打卡上报系统设计与实现 文档+项目源码及数据库文件+演示视频
  17. 嵌入式UWB定位测距设备开发实战(4)硬件之元器件选型
  18. 修改css样式后刷新网页无改变
  19. Redis7.0的安装步骤
  20. Java中的IO、NIO、File、BIO、AIO详解

热门文章

  1. JavaSE基础-概述
  2. MVC MVP MVVP Android端构建个人总结
  3. AVIATOR——轻量级JAVA表达式求值引擎
  4. CARLA——基于Ubuntu18.04安装CARLA Simulator
  5. java byte 释放内存_java java.nio.ByteBuffer.allocateDirect 导致内存泄露
  6. python-word
  7. iOS图像处理之画圆角矩形
  8. 强化学习处理自适应码流播放,爱奇艺AI推荐提升观看率15%
  9. css将文字置于图片上的方法
  10. 万能的list列表,python中的堆栈、队列实现全靠它