林长谋 黄玮

摘要:互联网数据获取及分析是当前数据科学的一個重要部分。该文针对互联网中就业岗位数据获取与分析的过程基于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. OEM/ODM指的是什么?
  2. win10不能访问局域网共享
  3. 人工智能缺陷与误觉:让机器产生幻觉的「怪异事件」
  4. Hadoop集群高可用及zookeeper+kafka组件搭建
  5. 大二上学期总结计算机专业,计算机学生的大二第二学期自我总结-自我总结
  6. navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线
  7. windows下pyhton_vitrualenv虚拟环境pycharm如何创建django项目
  8. bzoj 1312: Hard Life 01分数规划+网络流
  9. Redis3.x 源码安装
  10. 计算机怎么开启tftp服务器,Win7系统如何开启TFTP服务器?开启TFTP服务器方法
  11. VC 6.0下载 VC 6.0英文版下载 Visual C++ 6.0 英文企业版 集成SP6完美版(最新更新地址,百度网盘)...
  12. 记账系统推荐金蝶精斗云_金蝶精斗云是免费会计记账软件吗?
  13. idea 一直在updating index的问题
  14. CSS响应式布局--三栏布局实例演示及优缺点详解
  15. 智安网络丨DDoS攻击:无限战争
  16. Java工具类-获取请求ip/浏览器/操作系统/浏览器版本
  17. Appium的一点一滴
  18. Today今天便利店的梦想:准独角兽的雄心与挑战 1
  19. 程序员非机械键盘_最好的非机械键盘
  20. C语言实现扫雷游戏(可展开)

热门文章

  1. 嵌入式学习培训要学多久?嵌入式学习哪些内容?
  2. 【IoT】产品设计:Flash 芯片选型 W25Q16(封装尺寸及后缀)
  3. 循环神经网络RNN、LSTM、GRU实现股票预测
  4. 公司招java桌面应用开发工程师,招不到我就得经常加班了。
  5. 自他动词对照思维导图
  6. Python卡方分布
  7. Macos上一款专业的文字处理器
  8. c++的最简答的运用
  9. 想做软件测试的女孩子看这里
  10. 【数据库基础】EER图(Enhanced Entity-Relationship Modelling)