爬虫学习记录

从零开始实现scrapy爬取智联招聘的岗位信息-2

2018-07-28  本文已影响0人  岁月淡如水

在上一篇文章中,主要讲解了anaconda和scrapy的安装,接下来开始动手写爬虫。scrapy目前还只能在命令行中新建爬虫、执行爬虫,一开始可能并不习惯。下面开始进入anaconda Prompt ,通过以下命令新建一个newone爬虫项目,并进入到这个项目目录中,新建一个 my_spider的爬虫

# 创建一个名为newone的爬虫项目
scrapy startproject newone
#进入到爬虫目录
cd newone
#创建爬虫,名字为my_spider,后面是爬虫爬取数据的限制域名,即爬虫只在改域名下爬取数据
scrapy genspider my_sipder zhaopin.com

这样一个最基础的爬虫就算是创建好了,那么如何编写爬虫代码呢 ?
anaconda 中有很多工具,我们打开anaconda Navigator ,打开Spyder,在该环境下编写爬虫的代码,需要注意的是,我们只是使用Spyder工具书写代码,并不能在该环境运行、调试爬虫。运行爬虫还需要我们在命令行中执行。

打开Spyder 后,我们找到File explorer ,从中定位到我们刚刚新建的爬虫项目文件,如图所示: QQ截图20180728092112.png
项目中的文件很少,构成也很简单,主要用到的有my_spider、items、pipelines这几个文件。Scrapy编写爬虫的大致流程是:
(1)在items.py中定义我们想要爬取的内容,例如我们爬取招聘信息,就要定义招聘人数、工资等。

(2)在my_spider.py中,书写爬取过程,例如从哪个网页开始,如何爬取,爬取内容,返回到哪里都是自己编写。
(3)在piplines.py中处理返回的结果,例如我们要将爬取的内容保存到哪里?是json格式?TXT?还是数据库中?

既然是爬取智联招聘的招聘信息我们首先打开智联招聘的网站,以爬取上海IT招聘岗位为例,我们把城市改为上海,并搜索IT。从页面中可以看到,搜索结果在每页有60条,下面还有很多翻页。我们先打开其中的一页,查看网页中的招聘信息,如下图:可以看到,主要的招聘信息就在红框部分。

QQ截图20180728095440.png
我们的核心思路:我们应该从搜索结果页面开始,首先提取出岗位的具体链接,然后打开该链接,爬取保存数据,然后换一下个岗位链接,直到所有链接都遍历。
有了这个思路,我们首先使用谷歌浏览器首先分析搜索结果页面,按住shift+Ctrl+C即可快速定位到网页的代码处,经过初步的分析可以看到,所有岗位链接其实存储在一个table内,更具体一点,是存在<td class="zwmc" style="width: 250px;"> </td>。内的div下的a的href内。打开其他的岗位链接我们发现,链接在网页中也是在该结构里面。因此,我们可以通过遍历所有的td的class="zwmc"的标签,取出岗位的链接地址。
1.png 分析完搜索结果的页面,我们分析具体的单页中的元素构成,还是按住shift+Ctrl+C键,我们定位到职位月薪:面议这个标签,具体如下图,我已经将多余代码删掉,我们发现所有的我们需要的信息都在div class="terminalpage-left">标签内,我们只需要找到这个div,然后找到下面的ul,再取出所有的li内的数据就可以了。
<div class="terminalpage-left">
<ul class="terminal-ul clearfix">
<li><span>职位月薪:</span><strong>面议&nbsp;<a href="http://www.zhaopin.com/gz_shanghai/" target="_blank" title="上海工资计算器"><img src="//jobs.zhaopin.com/images/calculator.png" alt="上海工资计算器"></a></strong></li>
<li><span>工作地点:</span><strong><a target="_blank" href="http://www.zhaopin.com/shanghai/">上海</a>-长宁区</strong></li>
<li><span>发布日期:</span><strong><span id="span4freshdate">最近</span></strong></li>
<li><span>工作性质:</span><strong>全职</strong></li>
<li><span>工作经验:</span><strong>1-3年</strong></li>
<li><span>最低学历:</span><strong>大专</strong></li>
<li><span>招聘人数:</span><strong>3人 </strong></li>
<li><span>职位类别:</span><strong><a target="_blank" href="//jobs.zhaopin.com/shanghai/sj315/">IT技术支持/维护工程师</a></strong></li>
4.png

思路清楚了,对网页的分析完毕,下面我们开始代码的编写。

本文参考了lucky_yang_的博客;另外本文代码地址:链接: https://pan.baidu.com/s/1jn1aloADaqoH2Ra5343SHQ 密码: 55bc

上一篇 下一篇

猜你喜欢

热点阅读