爬虫入门--爬取就业网站上的岗位信息、解析爬取的数据构造数据集

  • 爬虫入门实践
    • 爬虫的基本概念
    • 爬虫的技术实现

爬虫入门实践

大家好!随着大数据分析逐渐火热的今天,爬虫技能也成了数据分析师一项不可或缺的技能, 要做好数据分析,爬虫构造出高质量的数据集是前提。那么谈到爬虫,很多同学可能都觉得很复杂,一头雾水,不知从何学起,这里呢就教大家如何从一个简单等实践了解爬虫的基本概念,以及实现一个简单的爬虫并构造出数据集的过程。

爬虫的基本概念

爬虫,就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
顾名思义,爬虫的技术实现需要做的就是模拟人去请求网页并得到访问结果的过程。我们可以拆解一下用户去访问浏览器的过程:
(1)第一,我们要有一个电脑机器。
在爬虫技术实现上这一点就要求有一个入网的ip地址。
(2)第二,用户要打开浏览器进行访问。
这里不得不提到一个概念就是UA(User Agent,用户代理的简写,一般用来区分不同的浏览器。)例如用户使用chrome访问了一个网页,那么chrome向对方发送请求的时候,就会带上UA信息,在对方服务接收到请求的时候,会根据UA信息识别出是哪种浏览器发出的请求,并返回适配这种浏览器解析展示的返回内容,浏览器最终拿到请求结果后,可以按照自身网页解析方式,将内容解析展示到网页上,也就是用户最终看到的结果,每种不同的浏览器都有自己的UA,例如可以很方便的查到,mac电脑chrome96.0版本的UA信息如下:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

(3)第三,要输入一串网页地址。
这个网页地址在爬虫技术中即是我们要爬取的网站的地址。
(4)用户最终能在网页上看到请求的结果网页。
在第(2)点我们提到了用户访问网页可以看到经过浏览器解析排版后的结果,而爬虫是通过程序模拟这个过程的,程序请求对方网站得到的是未经解析的html源码,因此需要根据用户需求解析出我们需要的数据字段,存储下来,得到数据集。

爬虫的技术实现

根据上述爬虫技术要素整理,可以很方便的实现出基本请求对方服务的代码,以python语言为例:
首先要引入网页请求需要的包:

import requests

然后模拟浏览器,为请求构造headers,添加UA信息:

headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' }

爬虫还需要对方请求的地址:

url = 'http://jy.zjiet.edu.cn/job/view/id/1177411'

利用请求包中的方法,请求该地址,得到请求结果:

res = requests.get(url, headers =headers)
print res

打印出的部分请求结果如下:


我们可以看到,请求结果实际是html源码,而我们需要的数据字段是藏在了html源码中,例如我们想要得到页面上的薪水字段(图中的2500-3499):

可以找到,该字段在html源码中实际对应的是由class为text-orange salary的薪水span标签包裹着的:

因此我们可以通过一些html源码解析工具,来解析处对应的字段,例如这里小编才用了python的html源码解析包BeautifuleSoup,解出薪水字段的方法如下:

soup=BeautifulSoup(res.text,"html.parser")
salary = soup.findAll(name="span", attrs={"class" :"text-orange salary"})[0].next_element
print('薪资:%s'%(salary))

除此之外,我们还可以按照类似的方法将职位、公司、地区、工作类型、学历要求等众多信息解析出来,这也就得到了我们的一条数据:

那么问题又来了,爬虫想要构造的是一个包含众多数据的数据集,因此对于岗位信息,我们至少要爬取多个链接才能得到一个可称作数据集的数据,对此我们可以构造一个url请求池,然后循环这个请求池中的url,依次调用爬取结果,并将结果逐条保存下来,整个过程的流程图如下:

根据这个过程,最终我们得到了就业网站岗位信息的数据集:

本篇文章,我们通过一个简单的实践,教大家利用python实践爬虫的过程,并解析结果构造出数据集。那么在实际应用中的场景,有时是多变的,例如爬出来的数据可能不是那么规整,有脏数据,异常值等,对此我们需要对数据进一步对清洗和规范化,以得到高质量的有利于分析对数据。在以后的篇章中,我会一一为大家讲解实践。
下一章,我会教大家利用python可视化分析工具,将本节爬取的数据进行简单的可视化,已得到数据的一些直观展示的指标,敬请期待!

如果您对博客内容的源码感兴趣,或者希望持续获得后续关于大数据分析的系列干货知识,可微信搜索“数据分析师进阶”或扫描以下二维码关注即可,公众号私信即可获取源码信息。

爬虫入门--爬取就业网站上的岗位信息构造数据集相关推荐

  1. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  2. python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例

    本篇文章小编给大家分享一下python爬虫实现爬取同一个网站的多页数据代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.爬虫的目的 从网上获 ...

  3. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  4. 初次尝试python爬虫,爬取小说网站的小说。

    本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...

  5. python爬虫 亲手爬取图书网站

    这个爬虫只是一个简单的爬虫,单线程并且任务的管理等 一 爬虫数据持久化方式 使用的是mysql数据库.需要设备上先安装mysql数据库,python中使用mysql 数据库的方法是使用pymysql库 ...

  6. 爬虫项目 | 爬取XX网站招聘信息

    /***本人代码小白 ,第一次做爬虫,代码仅供参考,欢迎大神指点,***/ 项目背景和功能 毕业将近,身为大三的我们,面临找工作的压力,如何快速的找到自己心仪的岗位并且及时投递简历成为同学们关心的问题 ...

  7. python爬虫网站 词云_Python爬虫之爬取情话网站并绘制词云

    一.爬取网站 1.分析目标网站 首先我们需要分析目标网站的源代码 分析html得知所有的情话都是在标签 下,而且一个 标签对应着一句情话. 2.编写代码 import bs4 import reque ...

  8. python入门爬取360网站的‘历史上的今天’

    导入的库---requests,bs4 import requests,bs4,tkinter 让别人输入日期 a=input("您要查询的月份(必须两位数,1月请输入01):") ...

  9. python爬虫学习之爬取某网站上的视频

    """ 实现步骤:发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据 1.发送请求,对于视频信息数据包发 ...

最新文章

  1. linux免安装nginx,Nginx免安装包制作工具:Nginx-portable
  2. C# winform 捕获全局异常
  3. cac会议投稿难度大吗_成考高升专难度大吗?考试通过率怎么样?
  4. T-SQL里数据库工程师都不知道的秘密之SQL Server自定义函数UDF
  5. 步步为营VS 2008 + .NET 3.5系列文章索引
  6. 使用 Jupyter 近 2 年,发现了这 3 个实用技巧
  7. Python入门--列表,字典,元组,集合总结
  8. 试论《华严经》来历的可信
  9. 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
  10. 如何用计算机计算log除法,对数计算器_如何使用计算器计算对数
  11. Win10smb2.0共享至android速度慢问题解决
  12. 0x80070057复制从服务器复制文件,0x80070057各种错误解决方法教程
  13. MATLAB做驻波,SMB色谱分离驻波优化设计的一种Matlab实现
  14. openwrt设置网络共享
  15. 【BZOJ3569】DZY Loves Chinese II(线性基,图的连通性)
  16. RuntimeError: Output 0 of SelectBackward is a view and is being modified inplace.
  17. 计算机网络-数据链路层 1
  18. 3套精品像素字体打包下载
  19. 伪类元素--before和after
  20. 云安全问题及其解决方案

热门文章

  1. Unity 农场 1 —— 环境搭建、背包系统、时间系统
  2. input file修改样式
  3. 计算机的配置与选购调查报告,目前主流危机计算机的配置及选购的调查报告
  4. SpringBoot事务注解@Transactional
  5. 微信小程序10---条件语句if和循环语句for(三目运算+hidden)
  6. angular controller不起作用解决方案
  7. Postman使用文档
  8. mysql-5.7.42 安装教程
  9. ctfshow愚人节欢乐赛wp(部分)
  10. html元素隐藏与显示