一个关于scrapy框架爬虫的简单又全面的爬虫项目

看完这篇文章,看官老爷可以得到什么?

一个具备商业价值的关于51Job招聘网站的爬虫项目,具备技能点如下:

    1.动态用户代理及IP切换的功能,被爬网站的反爬虫再也不会踢翻你的狗碗

    2.中断续爬功能,再也不怕突发异常导致的爬虫被迫中断,启动重新爬取的问题。

    3.logging功能,保存爬虫日志,观察日志,找自己爬虫爬取的逻辑BUG,避免不知不觉中搞脏了数据。  

    4.数据整理功能,清洗数据往往是许多初学者容易忽略的过程,整理过程是巩固python基础的过程也是后期通过Mongdb聚合分析的必须要做的过程。

废话先总结:

所有关于具备爬虫技术储备的我在此全部说完,后面不在说明,直接使用了,希望大家做一个高端大气的伸手党。

1:python基础是最基本的,还是推荐—— 万年廖雪峰吧。还有这个官方文档,不看官方文档的程序员是没有未来的。

2:HTML,CSS,JS(Jquery),这个东西总是要会的,不要纠结到什么程度,如果只是静态页面的爬虫 ——W3School 是够用的。

3:关于XPath——什么是XPath??

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

上面W3School教程中简介已经告诉大家了。这里我在简单说明下,一般爬虫主要是对网页本身进行爬取的,当然对于JS技术手段高,有丰富web项目经验的老手来说,能够通过浏览器调试工具发现被爬网站的接口地址也可以通过接口爬取。这里我们先用最传统的网页爬取方法。传统网页爬取方法就必须用到这个XPath了,它的作用主要是帮助我们定位被爬页面数据所归属的HTML元素定位。

举个🌰我们要找到51job这个职位列表页面中的第三个条目的岗位名称。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

看懂了吧?这就是我们要做的事情,通过XPath语法抓到页面上我们需要的数据。

4.scrapy爬虫框架的学习。以上技能都具备的小伙伴们,在这里希望你们多做笔记,先构建起对scrapy框架的整个流程走向流程,搞明白再动手,碗已经有了,离讨到饭还会远吗?这里分享几个网站,不多做讲解了。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

1.官方文档

2.百度,谷歌是最好的文档

3.我的珍藏分享链接(密码在底部微信打赏里面。有成本哈)

开始上手:

       需求:我要抓取51Job网站上武汉市所有的IT行业的数据,并进行数据清洗。

科学实践步骤:

1.划定爬取围栏。

2.拿到要抓取的URL地址。

3.准备配置爬虫setting.py文件

4.动态用户代理ip配置

5.数据保存json文件

正式开始!!!!!!!!!!!!!!!

——————————————————————————————————————————————————————

新建一个job51Teach的scrapy爬虫项目,spiders文件下创建一个名为job51Spiders.py的爬虫程序

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

接着spiders同级目录上创建一个utils的文件,这里写我们爬虫的工具类。

utils下创建爬虫的爬取范围的资源resource.py文件。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

看到上面比较疑惑这些数据字段是哪里来的?我们一块分析下51job网站。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 精准搜索武汉地区的计算机软件行业,并且工作职能也是做计算机软件开发

因为51job上没有给出IT岗位的职业列表,所以上述IT岗位list里面数据我是用boss直聘的IT岗位代替了。

现在我们来分析下上述的链接组成结构。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

通过开发者工具调试网站,有没有发现他的请求里面有个地区的字典?找到武汉市,前面的180200是不是和我们这个页面上请求的武汉市的url里面里面的字典值是对应的???懂了吧?当然为了证实猜想,我们需要通过多个地区切换去验证我们这一猜测。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

这里证实无意了

接着我们继续分析链接其他的组成部分,按照顺序我们再找下翻页的操作。(上面链接都是当前第一页)

现在我们翻到第二页看下链接有什么变化

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

继续翻到最后一页再看,验证到底是不是这个.2html在控制翻页。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》

证实无意了吧。接着按照流程,我们继续,分析,如果一个行业翻页爬取完了,是不是要切换IT行业继续爬取???

接着我们再次找一下URL中负责切换IT行业名称的字段。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 java
《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 PHP(拍黄片)

是不是又准确无意了?

先别兴奋,先等等,这里先说一个坑。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 关于C#

为什么要这样写?我们先看下搜索C#岗位51job的链接显示。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 它变成了这个样子。

如果我们是爬虫中切换成C#请求那就错了。如下图所示:

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 爬虫拼接C#链接时出现404

这个问题是因为url中 #会引起计算机识别时转意问题。这里不再贴图,想了解的进入链接吧。

回归正题,所以我们要按照51job上通过手动查询C#岗位时,URL转换C#的名称存储。也就是“C%2523”

好了,到这里,整个爬虫的流程我们就走完了。接下来,我们去定义我们要爬取的有效数据字段。

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 外部的基本信息
《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 岗位基本信息
《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 公司基本信息

爬取数据汇总:

      1.当前搜索行业的名称(当前爬取爬取资源名称例:java,php,python)

      2.招聘岗位名称(例:python工程师,python爬虫工程师)

      3.当前城市名称

      4.数据来源(当前只有51job,后期你要是有其它数据源呢,这里自己写个数据区分)

      5.岗位发布时间

      6.招聘公司所属行业(例:互联网,实体行业)

      7.公司当前状况(例:a轮,未融资,以融资,以上市)和公司类型(民营,国有,其他)合并

      8.公司所在位置(例:武汉市 洪山区)

      9.公司规模(例:1-20人,50-100人,100-999人)

      10.工作资历(例:1年下,1-3年,3-5年)

      11.学历要求(例:不限,大专,本科)

      12.最低薪资(例:10K-20K 取10K)

      13.最高薪资(例:10K-20K 取20K)

      14.待遇(例:创业公司,14薪,五险一金,包住,住房补贴)

预留这14个字段,都是必要的,为了后期插入mongdb数据库,方便后期的聚合分析,预期是达到可以根据公司体量及其岗位要求,去聚合出一个相对有价值切较为真实的数据结果供用户分析。所以,切记大数据永远是建立在数据规范的基础上的。现阶段我们先以json的形式保存到本地txt。

好了,爬取51job的准备工作已经构思完毕了。这一步非常关键,希望你也能在爬取开始前先构思完善。这样会免除你盲目开始然后返工和中途推翻自己的风险。

——————————————————————————————————————————————————————

先发个大纲,有兴趣还没学习到这一步的同学,先去填充技术储备吧,参考练手项目的同学,稍等一下,点个订阅,我稍后更新,我们共同进步,共同学习哈。


这里继续,发布了项目思路在下一篇文章里面————————> 链接

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 ugtm

《一个关于scrapy框架爬虫的简单又全面的爬虫项目》 ugtm

    原文作者:平常心即是禅
    原文地址: https://www.jianshu.com/p/5b45130ff9c0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞