scrapy爬虫框架实现51job武汉地区所有IT岗位爬取
这一篇是直接写实现过程了,如果刚接触的话,建议先去看上一篇 一个关于scrapy框架爬虫的简单又全面的爬虫项目 大纲。
先看文件目录。

1.scrapy配置settings文件。



接着配置爬虫相关的。

关于配置settings的详情,我这里不多写了,主要写当前项目中用到的,详细的给提供两个参考。
1.资源一
代理ip的自定义中间件配置(敲黑板)

当然方法不止这一种,也可以通过自定义中间件去切换或者spiders中去切换。更多种方案这里不再提供了。51job没有反爬虫。各位的碗不会被踢翻的😁
下面我们开始配置下代理ip的自动切换两种方案。
1.settings中设置代理ip。



2.通过自定义middlewares的代理IP中间件去请求代理ip的api接口实现切换。

初学教程,51job较为简单且没有反爬虫协议,我们这里用第一种方案去实现。
接下来,我们需要在items.py中配置我们需要的字段。

好了,到这一步,我们就可以正式开始写爬虫也就是spiders文件了。

再来看一眼,我们爬虫的爬取范围的配置文件。所谓范围就是对爬取URL链接的控制。

job51_CityLen和job51_ItNameLen都是划定爬取最大限度,不听话的虫子不是个好虫子。

看到这里有没有有一种豁然开朗的感觉????

这一步的目的是通过读取文本判断是否是第一次爬取。第一次就正常爬取,不是的话,就读取并且替换当前所有导致爬虫URL翻页的所有是元素的变量,如下图:

聪明的你是不是早已恍然大悟!!
当然有读了,也得有写,这里我们同样思路,没页爬取完毕要更改URL链接时,先写入txt文件。


到这里,你又学会了,以最LOW的方法实现中断续爬。恭喜恭喜。举国欢庆!!!
当然也有官方方案,这里我贴下图

我感觉txt保存url链接实现的中断续爬可能更好用些。当然你可以尝试官方的解决方案。这是链接
接着,跟着我步伐我们简单的走一遍爬取逻辑。

如图所示,我们每次爬取翻页后,就切换相对应的URL中起翻页,切换岗位,切换城市的变量。
这里还要强调log的重要性,数据量大时,你需要通过变量对应元素的变化去判断自己的爬取逻辑是否符合规范


好了,这一步就完成了。接下来我们讲下如果清洗数据。这一步让你的爬虫瞬间提成一个层次。


我们将所有薪资转换成标准单位(千/月)。按照天的的短期工作直接忽略。估计看到下面代码,你已经懵逼了,其实我写完再看时,也是懵逼的.......

最后一步没得说,先保存txt文档吧!


方便了后期mongdb聚合操作。
源码为了方便使用,我直接打包上传百度云了,如有需要请点击链接下载——————>链接

