




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
惠州学院HUIZHOU UNIVERSITY毕 业 论 文(设 计) 中文题目: 基于网络爬虫的招聘信息推送系统 服务器端设计与实现 英文题目:The recruitment information push system based on web crawler server design and implementation 姓 名 学 号 专业班级 12计算机2班 指导教师 提交日期 2016-4-28 教务处制基于网络爬虫的招聘信息推送系统服务器端设计与实现摘 要现今的招聘信息系统是一个提供招聘信息发布和查阅等服务的平台,但是每个发布招聘信息的平台都有自己的信息局限性,因此将各方的招聘信息收集起来,提供一个平台,为用户提供最全面的招聘信息的分类、分区,查询、搜索,提高招聘和求职的效率就显得相当必要。本系统通过定制、编写针对各个发布招聘信息的平台的网络爬虫来获取各平台的招聘信息,再将这些招聘信息存储到服务器的数据库中,之后再根据这些数据定制专用的移动端,这样就可以将数据库的数据通过移动端发送给用户。同时该项目还有用户信息管理功能,用户只需申请一个账户,便可以保存自己选择与填写的关键字到本地数据库与服务器数据库,无需每次使用都选择和填写关键字。关键词:招聘网站 网络爬虫 招聘信息推送 招聘信息整合全套设计加扣3012250582 The recruitment information push system based on web crawler server design and implementationAbstractTodays recruitment information system is to provide recruitment information release and access to a service platform, but each release recruitment information platform has its own limitations, so will the recruitment information collected, to provide a platform, to provide users with the most comprehensive recruitment information classification, partition, query, search, and improve the efficiency of the recruitment and employment is quite necessary. This system through the custom, the writing for all recruitment information release platform of crawler to crawl the recruitment information platform, and then on a web page for information about the key content of extract, the storage to the server database, and then customize android APP for client according to the data, so the database can be pushed to users via the android APP end timing data.At the same time, the project and user information management functions, users only need to apply for an account, you can save yourself selection and fill in the keywords to the database, need not use every time selection and fill in the keywords. Keywords: Recruitment website, Web crawler, Recruitment Information Push, Recruitment Information Collection 目 录摘 要IIAbstractIII目 录IV1 绪论61.1 研究背景61.2 研究的意义71.3 研究现状71.4 研究的主要内容及论文的组织结构81.4.1 研究的主要内容81.4.2 论文的组织结构82 相关技术分析92.1 Scrapy爬虫框架92.2 MySQL数据库92.3 Tornado102.4 HTTP协议102.5 JSON103 系统服务器端总体分析与设计113.1 需求分析113.1.1 功能需求113.1.2 性能需求133.1.3 开发环境需求143.2 总体结构设计143.3 模块接口设计153.3.1 网络爬虫模块接口设计153.3.2 移动端通信接口接口设计:153.4 数据库设计213.4.1 数据库E-R图213.4.2 数据库逻辑结构设计234 系统服务器端详细设计254.1 网络爬虫模块详细设计254.1.1 爬取功能详细设计254.1.2 数据整合功能详细设计284.1.3 数据存储功能详细设计304.2 移动端通信接口模块详细设计314.2.1 注册接口314.2.2 登录接口324.2.3 找回密码接口334.2.4 获取个人信息接口344.2.5 修改个人信息接口354.2.6 获取关键字列表接口364.2.7 搜索招聘信息接口384.2.8 上传用户数据接口394.2.9 下载用户数据接口414.2.10 推送招聘信息接口435 系统测试455.1 测试目的455.2 测试环境455.3 测试内容455.3.1 网络爬虫功能测试455.3.2 移动端通信接口功能测试486 总结与展望506.1 总结506.2 展望50致 谢51参考文献52附 录53VI1 绪论1.1 研究背景网络招聘,一般也称为在线招聘或者是电子招聘,是指在借助互联网的应用,实现企业单位人事部完成招聘工作的一种新型模式,即企业或者事业单位通过企业的官方网站或者互联网的第三方招聘信息发布平台如智联、前程无忧、58同城等发布招聘信息,然后通过电子邮件或者平台内部的简历数据库搜集应聘者的应聘信息,接着对简历进行初步筛选,再根据岗位实际需要安排相应的笔试和面试,最后确定聘用适合企业招聘岗位要求的岗位人选。不同于传统招聘,网络招聘打破了时间和空间上的限制,可以快速、便捷地在招聘双方之间传递信息,让双方的交流互动更加方便和及时。现在的互联网信息技术发展迅速,对人们的生活方式产生了深刻的影响,网络招聘已经成为很多求职者的首要选择,越来越多的企业或者事业单位也通过网络招聘进行人才招聘。总而言之,网络招聘以它自身独特的优势成为进行招聘工作的主流趋势。根据艾瑞提供的统计数据可知,在截至2014年底网络招聘的雇主数量达到252.4万家,增长率为28.2;网络求职者规模达到11525.2万人,增长率10.9%,两者都呈高速上升趋势,随着互联网的普及,网络招聘雇主招聘需求尤其是中小企业、微小企业的招聘需求持续增大,网络求职者的数量更是庞大,到2018年的时候预计会突破1.6亿人。供需量如此大的发展趋势对网络招聘的服务能力提出了更高的要求。因此,网络招聘的市场是非常具有潜力的1。目前市面上网络招聘途径存在以下两种方式:第一种,企业在自己的官网上发布招聘信息。求职者通过发送求职信到企业邮箱求职或者在官网上注册会员后完成线上履历的制作再把简历提交到官网的数据库中。这种方式属于比较老式的招聘方式,对于招聘双方都产生一定的局限性,因为招聘信息都发布在企业各自的官方网站上,信息的传播广度和深度都受到了限制,同时也容易产生信息的遗漏和滞后性,除非求职者时刻关注着企业官方网站的信息,否则是很难发现这些招聘信息,因此这种招聘方式是非常落后的,最终会被逐渐淘汰。第二种,企业将自己的招聘信息发布在第三方招聘平台上。企业在这些平台中注册各自的企业账号,通过这个账号发布招聘信息,同时也根据这个账号进行搜集和管理简历;求职者在这些招聘平台上搜索不同的招聘信息,通过注册账号成为这些网站的会员后再进行制作和投放自己的简历给企业。这种招聘信息的发布方式是现在最流行的招聘方式,由于这些平台提供的信息量大且范围广,求职者更愿意选择在这种平台上搜索和发现适合自己的岗位信息;由于这些平台拥有广大的客户群体,企业也更倾向于通过这样一个平台发布招聘信息,以便这些招聘信息能及时又迅速地传播。求职者和企业都实现了求职求贤的综合功能。近几年中发展的比较快的几大网络招聘信息平台有:前程无忧、猎聘网、智联招聘、中华英才网等2。1.2 研究的意义虽然国内的招聘网站以及其他也有发布招聘信息的平台众多,但是企业或用人单位在发布招聘信息时一般最多只会选择3到5个平台进行信息发布,因此导致的结果就是招聘信息太过分散,且一般招聘网站的检索功能有限,比如每次检索只能定位在一个城市,不能同时定位多个城市,求职者一般要浏览很多招聘信息网站或其他平台才能找到合适自己的工作。因此,当下迫切需要一个能够把尽可能多的招聘信息整合到一起的平台,且该平台还要提供更强大的检索功能,这样用户就可以通过该平台来进行招聘信息的检索,在短时间内就能够获取到大量的招聘信息,从而使求职者可以更快找到心仪的工作。1.3 研究现状目前,基于网络爬虫的招聘信息平台在国内外比较少见,有提供该平台的主要是搜索引擎公司如百度、谷歌等。但是大多数只能够做到对招聘信息的模糊搜索,不能做到对招聘信息的精确搜索以及对招聘信息的有效管理。另外因为招聘网站的招聘信息在未经允许的情况下是不能随意转载与发布的,因此基于网络爬虫的招聘信息系统目前还没有比较成功的案例。而传统的招聘网站除了有一定的招聘信息局限性之外,其所提供的搜索功能也并不会强大,比如每次搜索只能定位一个地区,只能选择一个行业等之类的限制,并不能提供给用户非常强大的搜索功能。1.4 研究的主要内容及论文的组织结构1.4.1 研究的主要内容1) 系统需求分析,确定基于网络爬虫的招聘信息推送系统服务器端需要具备的功能;2) 对基于网络爬虫的招聘信息推送系统服务器端进行概要设计,并确定初步方案;3) 研究服务器端与移动端的通信;4) 网络爬虫的招聘信息推送系统服务器端各个功能模块进行测试。1.4.2 论文的组织结构本论文是在“基于网络爬虫的招聘信息推送系统服务器端的设计与实现”的基础上完成的。论文的组织结构具体如下:第1章 绪论,主要介绍基于网络爬虫的网络招聘的研究背景及研究意义。第2章 关键技术分析,主要是介绍了移动端通信接口技术及轻量级Web框架Tornado,数据库MySQL以及网络爬虫框架Scrapy等。第3章 系统服务器端总体分析与设计,分析并确定基于网络爬虫的招聘信息推送系统服务器端需要具备的功能,对基于网络爬虫的招聘信息推送系统服务器端进行概要设计,并确定初步方案。第4章 系统详细设计,主要介绍了系统各模块功能的详细设计。第5章 实现与测试,对基于网络爬虫的招聘信息推送系统服务器端各个功能模块进行实现及测试,保证系统满足需求。第6章 总结与展望2 相关技术分析招聘信息推送系统服务器端采用基于Python语言的Scrapy爬虫框架来爬取招聘网站的招聘信息,使用MySQL数据库存储非关系型数据。服务器端提供给移动端的数据接口使用基于Python语言的轻量级Web框架Tornado来设计与实现。使用http协议来与移动端进行Json数据的通信。2.1 Scrapy爬虫框架本系统的服务器端使用Scrapy框架开发爬取招聘网站信息的网络爬虫。Scrapy框架是使用Python语言开发的一个爬取速度比较快的,层次比较高的网页爬取框架,它可以用于爬取网站并从网站的页面中提取出结构化的数据。Scrapy的用途非常多,既可以用于数据挖掘,也可以用于系统监测和自动化测试3。以下列出几个Scrapy的优点:1) 采取可读性更强的xpath代替正则。2) 强大的统计能力以及有一个很强大的log系统。3) 可以同时在不同的url上爬取数据。4) 支持shell方式的方式,这样方便进行独立调试。5) 自定义middleware中间件,方便写一些统一的过滤器。6) 可以通过管道的方式把数据存入数据库。2.2 MySQL数据库本系统的服务器端采用MySQL作为数据库。现在比较流行的数据库有MYSQL,Oracle,sql server等,这几大数据库都有其优点与缺点。Sql server的缺点是只能在windows平台上运行,无法在linux平台上运行,而oracle虽然功能非常强大,但是体积过于庞大,使用过于复杂。因此拥有跨平台特性,相对来说又比较小的MYSQL就是一个非常好的选择了,同时MYSQL也支持多种数据库存储方式,其所支持的SQL语言也是最标准的4。2.3 Tornado本系统的服务器端使用Tornado框架来开发提供给移动端的数据访问接口。Tornado是一个采用Python语言编写的Web框架,它是轻量级的5。Tornado 和现在的比较流行的Web服务器框架有着非常大的、明显的区别,首先它是基于非阻塞式的服务器,而且它的速度非常快。同时,因为它使用了非阻塞的方式和对linux平台所特有的epoll的运用,使得Tornado每秒可以处理数以千计的连接。因此 Tornado是移动端服务器的一个好选择6。2.4 HTTP协议本系统的服务器端使用HTTP协议与移动端进行通信。HTTP又称超文本传输协议,是互联网上应用最为广泛的一种网络协议。HTTP协议处于网络协议栈的应用层。它不仅保证计算机正确且快速地传输超文本文档,还能指定传输文档中的哪一部分,以及指定哪部分的内容首先显示(比如指定文本比图形先显示)等。HTTP最初设计的时候,是为了提供一种发布和接收HTML页面的解决方法,但是在这里我们也可以用它来传输JSON数据7。2.5 JSON本系统的服务器端使用JSON数据格式作为与移动端进行网络传输的数据格式。JSON是一种比较流行的数据交换格式,它是轻量级的。JSON采用的是完全独立于语言的一种文本格式,也就是说任何语言使用JSON的方式都是一样的。同时它采用了类似于C语言一类语言的习惯,这些特性使的JSON成为了一种理想的数据交换语言。他不仅易于人进行查看和书写,同时也易于机器进行解释和合成8。JSON中只有两种结构:一个是对象,另一个是数组。经过对象、数组两种结构就可以组成复杂的数据结构了9。3 系统服务器端总体分析与设计本章主要讲解基于网络爬虫的招聘信息推送系统服务器端的需求分析,包括需要解决的问题、主要功能需求、性能需求以及开发环境需求等。在开发软件之前,先要明确软件的用途是什么,需要什么功能,以保证开发出满足真正用户需求的软件。采用软件工程的方法,对基于网络爬虫的招聘信息系统服务器端进行详细的需求分析。3.1 需求分析如今,国内的招聘网站以及其他也有发布招聘信息的平台众多,但是企业或用人单位在发布招聘信息时一般最多只会选择3到5个平台进行信息发布,且一般招聘网站的检索功能有限,比如每次检索只能定位在一个城市,不能同时定位多个城市,求职者一般要浏览很多招聘信息网站或其他平台才能找到合适自己的工作。因此,当下迫切需要一个能够把尽可能多的招聘信息整合到一起的平台,且该平台还要提供更强大的检索功能,这样用户只需要使用该平台来进行招聘信息的检索,就可以在短时间内就能够获取到大量的招聘信息,从而使求职者可以更快找到心仪的工作。为了解决这些问题,该系统的服务器端必须起到如下作用:1) 能够获取到并整合许多招聘网站或其他平台的招聘信息。2) 给移动端提供强大的检索功能。3) 保存用户选择及填写的关键字以及用户的资料。4) 能够同步用户数据到移动端5) 根据用户提交的关键字向用户推送招聘信息。3.1.1 功能需求基于网络爬虫的招聘信息推送系统服务器端的主要功能是获取招聘网站的招聘信息以及将这些信息整合存储进数据库,同时提供移动端获取服务器端数据的接口。因此该系统分两个模块:网络爬虫模块与移动端通信接口模块。网络爬虫模块的主要功能有:1) 数据爬取功能:通过爬取各个招聘网站或其他平台采集招聘信息。2) 数据整合功能:将不同招聘网站的数据整合到一起。3) 数据存储功能:将采集到的数据存储到数据库。网络爬虫模块的功能结构如图 31所示:图 31 网络爬虫结构图 移动端通信接口模块提供的接口主要有:1) 注册接口:提供注册功能。2) 登录接口:验证账户密码是否正确。3) 找回密码接口:提供找回密码功能。4) 查看个人信息接口:获取移动端用户个人信息。5) 修改个人信息接口:提供修改用户个人信息及密码的功能。6) 关键字接口:提供关键字列表给移动端。7) 搜索接口:根据移动端提交的关键字检索招聘信息,然后发送给移动端。8) 上传数据接口:提供移动端上传数据到服务器端的功能。9) 下载数据接口:提供下载服务器端的数据到移动端的功能。10) 推送接口:推送招聘信息给移动端。移动端通信接口模块的用例如图 32所示:图 32移动端通信接口用例图3.1.2 性能需求基于网络爬虫的招聘信息推送系统服务器端在功能上必须实现以上各个功能模块,系统同时需要保证具备以下性能:1) 完整性和健壮性:系统的功能比较完整而且具有一定程度的容错能力。2) 在使用过程中保证系统功能能够稳定地运行。3) 良好的可拓展性,方便系统以后升级。4) 易于维护:系统难免由于某些可能存在的缺陷和不足,方便维护对于系统很重要。5) 保证系统的安全性要达到一定程度。6) 良好的兼容性:系统可以在大部分的PC机上运行。3.1.3 开发环境需求本系统的服务器端的开发环境需求为:1) CPU:i3 2350M及以上2) 内存:4G及以上3) 硬盘:200G及以上4) 系统:Ubuntu14.04LTS5) 爬虫框架:Scrapy6) Web框架:Tornado7) 数据库:MySQL3.2 总体结构设计基于网络爬虫的招聘信息推送系统服务器端由网络爬虫模块和移动端通信接口模块两部分组成,其中网络爬虫模块分为数据爬取、数据整合和数据存储三大功能,移动端通信接口模块分为注册接口、登录接口、找回密码接口、获取个人信息接口、修改个人信息接口、获取关键字列表接口、搜索招聘信息接口、上传用户数据接口、下载用户数据接口、推送招聘信息接口共十大接口,其功能与接口架构如图 33所示:图 33服务器端功能架构图3.3 模块接口设计系统服务器端分为网络爬虫模块与移动端通信接口模块。3.3.1 网络爬虫模块接口设计网络爬虫模块通过从招聘网站获取数据,提取出其中的招聘信息,然后再经过数据整合模块经过数据修改,之后再存储到数据库中。网络爬虫从招聘网站上爬取并保存到数据库的数据中应包括如下数据:URL、职位名称、工作地点、工作经验、最低学历、月薪、发布日期、公司名称、公司性质、公司规模、公司行业、职位描述,信息来源。另外,因每个招聘网站对招聘信息的归类不同,因此需对其中一些数据进行修改后再存进数据库,如:工作经验、最低学历、公司性质等。3.3.2 移动端通信接口接口设计:服务器与移动端的通信采用HTTP协议来传输JSON格式的数据,之后解析JSON数据,并运行相应的移动端请求,返回给移动端相应的响应数据。服务器的每个接口的通信数据如下所示:1) 注册接口通信数据,如表 31所示:表 31 注册接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码3passwd2String密码确认4emailString邮箱5PhoneString手机号码响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息2) 登录接口通信数据,如表 32所示:表 32 登录接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息3) 找回密码接口通信数据,如表 33所示:表 33 找回密码接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString新密码3passwd2String新密码确认4emailString邮箱5PhoneString手机号码响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4) 获取个人信息接口数据通信数据,如表 34所示:表 34 获取个人信息接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4usernameString用户名5emailString邮箱6PhoneString手机号码5) 修改个人信息接口通信数据,如表 35所示表 35 修改个人信息接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码3newusernameString新用户名4newemailString新邮箱5newphoneString新手机号码7oldpasswdString旧密码8newpasswdString新密码9newpasswd2String新密码确认响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息6) 获取关键字列表接口通信数据,如表 36所示:表 36 获取关键字列表接口通信数据表请求数据(无)响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4JobString关键字列表7) 搜索招聘信息接口通信数据,如表 37所示:表 37 搜索招聘信息接口通信数据表请求数据编号数据名称数据类型说明1placeString工作地点2eduString最低学历3experString工作经验4mon_pay_downString月薪下限5mon_pay_upString月薪上限7dataString发布日期8com_propString公司性质9com_scaleString公司规模10com_industString公司行业11com_nameString公司名称12keywordString关键字13unkeywordString排除关键字响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4JobString招聘信息8) 上传用户数据接口通信数据,如表 38所示表 38 上传用户数据接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码3placeString工作地点4eduString最低学历5experString工作经验7mon_pay_downString月薪下限8mon_pay_upString月薪上限9dataString发布日期10com_propString公司性质11com_scaleString公司规模12com_industString公司行业13com_nameString公司名称14keywordString关键字15unkeywordString排除关键字16IDString用户收藏招聘信息的ID响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息9) 下载用户数据接口通信数据,如表 39所示:表 39 下载用户数据接口通信数据表请求数据编号数据名称数据类型说明1usernameString用户名2passwdString密码响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4searchString关键字5collectionString用户收藏的招聘信息10) 推送招聘信息接口通信数据,如表 310所示:表 310 推送招聘信息接口通信数据表请求数据编号数据名称数据类型说明1placeString工作地点2eduString最低学历3experString工作经验4mon_pay_downString月薪下限5mon_pay_upString月薪上限7dataString发布日期8com_propString公司性质9com_scaleString公司规模10com_industString公司行业11com_nameString公司名称12keywordString关键字13unkeywordString排除关键字14maxIDString移动端最大招聘信息ID响应数据1errorint是否错误2errorTypeInt错误代码3errorMessageString错误信息4JobString招聘信息3.4 数据库设计3.4.1 数据库E-R图本节根据模块接口设计可以对系统服务器端数据库的ER图进行设计。1) 招聘信息实体:招聘信息主要属性:ID、url、职位名称、工作地点、最低学历、工作经验、月薪、月薪下限、月薪上限、发布日期、公司名称、公司性质、公司规模、公司行业,来源。招聘信息实体如图 34所示:图 34 招聘信息实体图2) 用户实体用户实体主要属性:用户ID,用户名,密码,邮箱,手机号码,关键字,收藏。用户实体如图 35所示:图 35 用户实体图3.4.2 数据库逻辑结构设计数据库的结构的好与不好,直接影响到了整个系统的运行效率,所以先根据系统需求及需求总体结构设计对数据库的主要表的结构进行设计,同时为了减少数据库的复杂性,采用非关系型来设计数据表。1) 招聘信息表(job),存储从招聘爬取并处理过的招聘信息,如表 311所示。表 311 招聘信息表(job)编号字段名称数据结构是否允许为空是否主键说明1IDbigint否是ID号确保唯一性2urlvarchar(255)否否招聘信息原网页3namevarchar(45)否否职位名称4placevarchar(20)是否工作地点5eduvarchar(20)是否最低学历6expervarchar(20)是否工作经验7mon_payvarchar(20)是否月薪8mon_pay_downint是否月薪下限9mon_pay_upint是否月薪上限10datetimestamp否否发布时间11descrtext是否职位描述12com_namevarchar(45)是否公司名称13com_propvarchar(20)是否公司性质14com_scalevarchar(20)是否公司规模15com_industvarchar(45)是否公司行业16sourcevarchar(20)是否来源网站2) 用户信息表(user),存储用户信息及用户移动端上传的数据,如表 312所示,其中keyword与collect两个字段存储的是json数据。表 312 用户信息表(user)编号字段名称数据结构是否允许为空是否主键说明1IDbigint否是ID号确保唯一性2namevarchar(18)否否用户名3passwdVarchar(18)否否密码4EmailVarchar(255)否否邮箱5PhoneVarchar(11)否否手机号码6KeywordText是否用户关键字集合7CollectText是否用户收藏招聘信息的ID列表4 系统服务器端详细设计系统服务器端分为网络爬虫模块与移动端通信接口模块两大模块。4.1 网络爬虫模块详细设计网络爬虫模块分为爬取功能,整合功能,存储功能三个功能。4.1.1 爬取功能详细设计以智联招聘为例,网络爬虫先爬取智联招聘的分类页面/,从该页面获取“招聘全部职位”的每一个小类的链接,再爬取每一小类的链接,从中获取到发布时间为“今天”的链接,再去爬取“今天”的链接,再从“今天”的页面中获取到招聘信息列表的每一条招聘信息的链接以及下一页的链接,其中下一页的链接传给上一步,最后从每一条招聘信息的页面爬取到系统所需要的数据。该爬取过程如图 41所示:图 41 网络爬虫活动图关键代码:sites = sel.xpath(/divclass=listcon/a/href).extract()for s in sites: s = self.start_urls0 + s + pd1/yield Request(s, callback=self.parse_item)提取智联招聘网站分类页面上的每一小类的链接,迭代爬取每一小类的链接sites_error = sel.xpath(/divclass=no-resulte-warning).extract()if not sites_error: sites_url = sel.xpath(/spanclass=search_list_zw search_list_first/a/href).extract() for url in sites_url: yield Request(url, callback=self.my_parse) next_url = sel.xpath(/spanclass=search_page_next/a/href).extract() if next_url: yield Request(self.start_urls0:-1 + next_url0, callback=self.parse_item)提取每一小类页面上的每条招聘信息的链接及下一页的链接,迭代爬取招聘信息的链接,及下一页的链接。招聘信息数据结构:class JobItem(scrapy.Item): url = scrapy.Field() #url name = scrapy.Field() #职位名称 mon_pay = scrapy.Field() #月薪 mon_pay_down= scrapy.Field() #月薪下限 mon_pay_up = scrapy.Field() #月薪上限 place = scrapy.Field() #工作地点 exper = scrapy.Field() #工作经验 edu = scrapy.Field() #最低学历 descr = scrapy.Field() #置位描述 company = scrapy.Field() #公司名称 com_scale = scrapy.Field() #公司规模 com_prop = scrapy.Field() #公司性质com_indust = scrapy.Field() #公司行业该数据结构为招聘信息内容的数据结构,用来存储招聘信息的内容。item_joburl = response._get_url() item_jobname = n.encode(utf-8) for n in sel.xpath(/divclass=inner-left fl/h1/text().extract() item_jobcompany = n.encode(utf-8) for n in sel.xpath(/divclass=inner-left fl/h2/a/text().extract() sites = sel.xpath(/ulclass=terminal-ul clearfix/li) item_jobmon_pay = n.encode(utf-8) for n in sites0.xpath(./strong/text().extract() item_jobplace = n.encode(utf-8) for n in sites1.xpath(./strong/a/text().extract() item_jobexper = n.encode(utf-8) for n in sites4.xpath(./strong/text().extract() item_jobedu = n.encode(utf-8) for n in sites5.xpath(./strong/text().extract() item_jobclassify = n.encode(utf-8) for n in sites7.xpath(./strong/a/text().extract() sites = sel.xpath(/divclass=tab-inner-cont) item_jobdescr = n.encode(utf-8) for n in sites0.xpath(./*/text().extract() sites = sel.xpath(/divclass=company-box) sites = sites.xpath(./ul/li) item_jobcom_scale = n.encode(utf-8) for n in sites0.xpath(./strong/text().extract() item_jobcom_prop = n.encode(utf-8) for n in sites1.xpath(./strong/text().extract() item_jobcom_indust = n.encode(utf-8) for n in sites2.xpath(./strong/a/text().extract()获取招聘信息页面上的每一项内容,填到招聘信息的数据结构中。4.1.2 数据整合功能详细设计根据总体设计部分,可以得知每个招聘网站信息分类不同,从招聘网站获取的数据中有一部分需经过整合(修改)过后才能存储进数据库。其中需要修改的数据包括:日期,工作经验,公司性质,月薪。其中,日期不需要从招聘网站获取,从上一小节网络爬虫爬取功能详细设计部分知道,网络爬虫爬取的数据均为当天发布的招聘信息,因此,日期的值默认为今天的日期。工作经验经过研究发现,可以归类为不限、无经验、一年以下、1-3年、3-5年、5-10年、10年以上共7类。例如:1-2年,2-3年可以归类于1-3年。公司性质经过研究发现,可以归类为国企、外商独资、代表处、合资、民、个人企业、股份制企业、上市公司、国家机关、事业单位、非营利机构、创业公司、其他共13类。例如:国家机关与政府机关都归类于国家机关。月薪除了需要直接存储进数据库之外,还需要从月薪中提取出月薪下限跟月薪下限两个数据,供移动端搜索使用。例如:3000-5000/月提取出3000与5000两个数字。数据整合流程如图 42所示:图 42 数据整合活动图关键代码:pay = mon_pay.split(-)mon_pay_down = re.search(rd+, pay0)if mon_pay_down != None: mon_pay_down = mon_pay_down.group()if pay._len_() = 2: mon_pay_up = re.search(rd+, pay1) if mon_pay_up != None: mon_pay_up = mon_pay_up.group()if 年 in mon_pay: mon_pay_down = int(mon_pay_down) mon_pay_up = int(mon_pay_up) if mon_pay_down 1000: mon_pay_down = mon_pay_down * (10000 / 12) mon_pay_up = mon_pay_up * (10000 / 12) else: mon_pay_down = mon_pay_down / 12 mon_pay_up = mon_pay_up / 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教育资源不平等对社会稳定风险的分析报告
- 社交媒体平台在2025年文化传播中的社会责任与舆论引导研究
- 子公司印章谁来管理制度
- 婴幼儿健康信息管理制度
- 公司稽查部归谁管理制度
- 服务平台加盟管理制度
- 公司提成及奖励管理制度
- 县防疫物资发放管理制度
- 旭辉透明工厂管理制度
- 病理实验考试题及答案
- 美发店投资入股协议书8篇
- 《数据类型概述》课件
- 第四单元 课题3 物质组成的表示教学设计-2024-2025学年九年级化学人教版(2024)上册
- 植物细胞的分子生物学研究-深度研究
- DeepSeek零基础到精通手册(保姆级教程)
- 2024年中国软件行业基准数据 (CSBMK-202410)
- 小学四年级下册四则混合运算及简便运算
- 公共政策分析概论 课件 第3章 政策主体、政策客体与政策环境
- 《学前教育教育研习》课程教学大纲
- 2024-2025成都各区初二年级下册期末数学试卷
- 医疗美容行业美容管理流程标准化解决方案
评论
0/150
提交评论