在上一篇文章中东涡,主要講解了anaconda和scrapy的安裝涕滋,接下來(lái)開(kāi)始動(dòng)手寫爬蟲(chóng)玲昧。scrapy目前還只能在命令行中新建爬蟲(chóng)、執(zhí)行爬蟲(chóng)纹笼,一開(kāi)始可能并不習(xí)慣。下面開(kāi)始進(jìn)入anaconda Prompt ,通過(guò)以下命令新建一個(gè)newone爬蟲(chóng)項(xiàng)目,并進(jìn)入到這個(gè)項(xiàng)目目錄中苟跪,新建一個(gè) my_spider的爬蟲(chóng)
# 創(chuàng)建一個(gè)名為newone的爬蟲(chóng)項(xiàng)目
scrapy startproject newone
#進(jìn)入到爬蟲(chóng)目錄
cd newone
#創(chuàng)建爬蟲(chóng)廷痘,名字為my_spider,后面是爬蟲(chóng)爬取數(shù)據(jù)的限制域名,即爬蟲(chóng)只在改域名下爬取數(shù)據(jù)
scrapy genspider my_sipder zhaopin.com
這樣一個(gè)最基礎(chǔ)的爬蟲(chóng)就算是創(chuàng)建好了件已,那么如何編寫爬蟲(chóng)代碼呢 笋额?
anaconda 中有很多工具,我們打開(kāi)anaconda Navigator 篷扩,打開(kāi)Spyder兄猩,在該環(huán)境下編寫爬蟲(chóng)的代碼,需要注意的是鉴未,我們只是使用Spyder工具書(shū)寫代碼厦滤,并不能在該環(huán)境運(yùn)行、調(diào)試爬蟲(chóng)歼狼。運(yùn)行爬蟲(chóng)還需要我們?cè)诿钚兄袌?zhí)行掏导。
項(xiàng)目中的文件很少添瓷,構(gòu)成也很簡(jiǎn)單,主要用到的有my_spider值纱、items鳞贷、pipelines這幾個(gè)文件。Scrapy編寫爬蟲(chóng)的大致流程是:
(1)在items.py中定義我們想要爬取的內(nèi)容虐唠,例如我們爬取招聘信息搀愧,就要定義招聘人數(shù)、工資等疆偿。
(2)在my_spider.py中咱筛,書(shū)寫爬取過(guò)程,例如從哪個(gè)網(wǎng)頁(yè)開(kāi)始杆故,如何爬取迅箩,爬取內(nèi)容,返回到哪里都是自己編寫处铛。
(3)在piplines.py中處理返回的結(jié)果饲趋,例如我們要將爬取的內(nèi)容保存到哪里?是json格式撤蟆?TXT奕塑?還是數(shù)據(jù)庫(kù)中?
既然是爬取智聯(lián)招聘的招聘信息我們首先打開(kāi)智聯(lián)招聘的網(wǎng)站家肯,以爬取上海IT招聘崗位為例爵川,我們把城市改為上海,并搜索IT息楔。從頁(yè)面中可以看到寝贡,搜索結(jié)果在每頁(yè)有60條,下面還有很多翻頁(yè)值依。我們先打開(kāi)其中的一頁(yè)圃泡,查看網(wǎng)頁(yè)中的招聘信息,如下圖:可以看到愿险,主要的招聘信息就在紅框部分颇蜡。
我們的核心思路:我們應(yīng)該從搜索結(jié)果頁(yè)面開(kāi)始,首先提取出崗位的具體鏈接辆亏,然后打開(kāi)該鏈接风秤,爬取保存數(shù)據(jù),然后換一下個(gè)崗位鏈接扮叨,直到所有鏈接都遍歷缤弦。
有了這個(gè)思路,我們首先使用谷歌瀏覽器首先分析搜索結(jié)果頁(yè)面彻磁,按住shift+Ctrl+C即可快速定位到網(wǎng)頁(yè)的代碼處碍沐,經(jīng)過(guò)初步的分析可以看到狸捅,所有崗位鏈接其實(shí)存儲(chǔ)在一個(gè)table內(nèi),更具體一點(diǎn)累提,是存在
<td class="zwmc" style="width: 250px;"> </td>尘喝。
內(nèi)的div下的a的href內(nèi)。打開(kāi)其他的崗位鏈接我們發(fā)現(xiàn)斋陪,鏈接在網(wǎng)頁(yè)中也是在該結(jié)構(gòu)里面朽褪。因此,我們可以通過(guò)遍歷所有的td的class="zwmc"
的標(biāo)簽无虚,取出崗位的鏈接地址缔赠。div class="terminalpage-left">
標(biāo)簽內(nèi),我們只需要找到這個(gè)div凫海,然后找到下面的ul,再取出所有的li內(nèi)的數(shù)據(jù)就可以了。
<div class="terminalpage-left">
<ul class="terminal-ul clearfix">
<li><span>職位月薪:</span><strong>面議 <a target="_blank" title="上海工資計(jì)算器"><img src="http://jobs.zhaopin.com/images/calculator.png" alt="上海工資計(jì)算器"></a></strong></li>
<li><span>工作地點(diǎn):</span><strong><a target="_blank" >上海</a>-長(zhǎng)寧區(qū)</strong></li>
<li><span>發(fā)布日期:</span><strong><span id="span4freshdate">最近</span></strong></li>
<li><span>工作性質(zhì):</span><strong>全職</strong></li>
<li><span>工作經(jīng)驗(yàn):</span><strong>1-3年</strong></li>
<li><span>最低學(xué)歷:</span><strong>大專</strong></li>
<li><span>招聘人數(shù):</span><strong>3人 </strong></li>
<li><span>職位類別:</span><strong><a target="_blank" >IT技術(shù)支持/維護(hù)工程師</a></strong></li>
思路清楚了行贪,對(duì)網(wǎng)頁(yè)的分析完畢,下面我們開(kāi)始代碼的編寫建瘫。
本文參考了lucky_yang_的博客崭捍;另外本文代碼地址:鏈接: https://pan.baidu.com/s/1jn1aloADaqoH2Ra5343SHQ 密碼: 55bc