【圖文詳解】scrapy爬蟲與Ajax動(dòng)態(tài)頁面——爬取拉勾網(wǎng)職位信息(1)

5-14更新

注意:目前拉勾網(wǎng)換了json結(jié)構(gòu),之前是content - result 現(xiàn)在改成了content- positionResult - result,所以大家寫代碼的時(shí)候要特別注意加上一層positionResult的解析汹碱。

現(xiàn)在很多網(wǎng)站都用了一種叫做Ajax(異步加載)的技術(shù)腌且,就是說晾虑,網(wǎng)頁打開了挥唠,先給你看上面一部分東西够掠,然后剩下的東西再慢慢加載忠聚。
所以你可以看到很多網(wǎng)頁赂蕴,都是慢慢的刷出來的柳弄,或者有些網(wǎng)站隨著你的移動(dòng),很多信息才慢慢加載出來概说。這樣的網(wǎng)頁有個(gè)好處碧注,就是網(wǎng)頁加載速度特別快(因?yàn)椴挥靡淮渭虞d全部內(nèi)容)。

但是這對我們寫爬蟲就不方便了糖赔,因?yàn)槟憧偸桥啦坏侥阆胍臇|西萍丐!

我們舉個(gè)例子,我因?yàn)樽罱敕治隼淳W(wǎng)有關(guān)職位情況的數(shù)據(jù)放典,所以我上了他們網(wǎng)站:(注意逝变!爬取的內(nèi)容僅限于學(xué)術(shù)交流!請勿用于商業(yè)用途奋构!)
http://www.lagou.com/zhaopin/

image

可以看到壳影,這里有很多職位信息。注意弥臼,這里當(dāng)我們點(diǎn)下一頁

image

我們可以發(fā)現(xiàn)宴咧,網(wǎng)頁地址沒有更新就直接加載出來了!醋火!

image

這明顯就是一個(gè)動(dòng)態(tài)頁面悠汽,我們寫個(gè)爬蟲來爬一下網(wǎng)頁,看看能得到什么內(nèi)容芥驳,現(xiàn)在應(yīng)該能很快寫出(搭出)一個(gè)這樣的爬蟲吧柿冲?(其實(shí)啥也沒有)

image

可以看到輸出,你可以把所有源代碼瀏覽一遍兆旬,里面沒有任何有關(guān)職位的信息假抄!

image

如果你覺得不直觀,我教你一招丽猬,我們簡單的把它輸出到一個(gè)html看看

![](https://raw.githubusercontent.com/hk029/blog/master/爬蟲/動(dòng)態(tài)加載網(wǎng)頁爬取/1461237819572.png" width=400px />

就是這么個(gè)情況宿饱。。關(guān)鍵部分呢脚祟!空的C浴!由桌!

image

尋找可以網(wǎng)頁

這時(shí)候要怎么辦呢为黎?難道信息就爬不了嗎邮丰??

當(dāng)然不是铭乾,你要想剪廉,它只要是顯示到網(wǎng)頁上了,就肯定在某個(gè)地方炕檩,只是我們沒找到而已斗蒋。

只不過,這個(gè)時(shí)候笛质,我們就要費(fèi)點(diǎn)功夫了泉沾。我們還是回到剛才的網(wǎng)頁上去點(diǎn)F12,這時(shí)候经瓷,我們用network功能

image

這時(shí)候你可能看到里面沒東西爆哑,這是因?yàn)樗挥涗洿蜷_后的網(wǎng)絡(luò)資源的信息。
我們按F5刷新一下舆吮。

image

你可以看到開始唰唰的刷出東西來了……太快了揭朝,我眼睛有點(diǎn)跟不上了,我們等它停下來色冀,我們隨便點(diǎn)個(gè)資源潭袱,會(huì)出現(xiàn)右邊的框,我們切換到response

image

然后我們就開始找可疑的網(wǎng)頁資源锋恬。首先屯换,圖片,css什么之類的可以跳過与学,這里有個(gè)訣竅彤悔,就是一般來說,這類數(shù)據(jù)都會(huì)用json存索守,所以我們嘗試在過濾器中輸入json

image

我們發(fā)現(xiàn)了2個(gè)資源感覺特別像晕窑,其中有個(gè)名字直接有position,我們點(diǎn)擊右鍵卵佛,在新標(biāo)簽頁打開看看

![](https://raw.githubusercontent.com/hk029/blog/master/爬蟲/動(dòng)態(tài)加載網(wǎng)頁爬取/1461238727325.png" width=200px />

雖然看上去很亂(密集恐懼癥估計(jì)忍不了)但是實(shí)際上很有條理杨赤,全是鍵值對應(yīng)的,這就是json格式截汪,特別適合網(wǎng)頁數(shù)據(jù)交換疾牲。

image

這里我們發(fā)現(xiàn)就是這個(gè)了!所有職位信息都在里面衙解,我們趕緊記錄下它的網(wǎng)址

網(wǎng)頁構(gòu)造

通過觀察網(wǎng)頁地址可以發(fā)現(xiàn)推測出:
http://www.lagou.com/jobs/positionAjax.json?這一段是固定的阳柔,剩下的我們發(fā)現(xiàn)上面有個(gè)北京

image

我們把這里改成上海看看蚓峦,可以看見又出來一個(gè)網(wǎng)頁內(nèi)容盔沫,剛好和之前網(wǎng)頁把工作地改成上海医咨,對應(yīng)的內(nèi)容一致

image
image

所以我們可以得出結(jié)論,這里city標(biāo)簽就代表著你選的工作地點(diǎn)架诞,那我們要是把工作經(jīng)驗(yàn),學(xué)歷要求干茉,什么都選上呢谴忧??可以直接看到角虫,網(wǎng)址就變了很多

<img
src="https://raw.githubusercontent.com/hk029/blog/master/爬蟲/動(dòng)態(tài)加載網(wǎng)頁爬取/1461239055953.png)

我們直接把這些復(fù)制到剛才我們找到的網(wǎng)頁上


image

可以發(fā)現(xiàn)和網(wǎng)頁內(nèi)容一致

image

現(xiàn)在我們可以下結(jié)論沾谓,我們需要的就是這個(gè)網(wǎng)址:
http://www.lagou.com/jobs/positionAjax.json

然后后面可以加這些參數(shù):

gj=應(yīng)屆畢業(yè)生&xl=大專&jd=成長型&hy=移動(dòng)互聯(lián)網(wǎng)&px=new&city=上海

通過修改這些參數(shù),我們就可以獲取不同的職位信息戳鹅。

<font color=red>注意:</font>這里的構(gòu)造還比較簡單均驶,有時(shí)候,有些網(wǎng)址的構(gòu)造遠(yuǎn)比這個(gè)復(fù)雜枫虏,經(jīng)常會(huì)出現(xiàn)一些你不知道什么意思的id=什么的妇穴,這個(gè)時(shí)候,可能這個(gè)id的可能值可能就在別的文件中隶债,你可能還得找一遍腾它,也可能就在網(wǎng)頁源代碼中的某個(gè)地方。
還有一種情況死讹,可能會(huì)出現(xiàn)time=什么的瞒滴,這就是時(shí)間戳,這時(shí)候赞警,需要用time函數(shù)構(gòu)造妓忍。總之愧旦,要具體情況具體分析世剖。

import time
time.time()

編寫爬蟲

因?yàn)檫@個(gè)網(wǎng)頁的格式是用的json,那么我們可以用json格式很好的讀出內(nèi)容忘瓦。
這里我們切換成到preview下搁廓,然后點(diǎn)content——result,可以發(fā)現(xiàn)出先一個(gè)列表耕皮,再點(diǎn)開就可以看到每個(gè)職位的內(nèi)容境蜕。為什么要從這里看?有個(gè)好處就是知道這個(gè)json文件的層級結(jié)構(gòu)凌停,方便等下編碼粱年。

image

整個(gè)處理的代碼就那么幾句話,可以可出罚拟,這里完全和剛才的層級結(jié)構(gòu)是一致的台诗。先content然后result然后是每個(gè)職位的信息完箩。

        jdict = json.loads(response.body)
        jcontent = jdict["content"]
        jresult = jcontent["result"]
        for each in jresult:
            print each['city']
            print each['companyName']
            print each['companySize']
            print each['positionName']
            print each['positionType']
            print each['salary']
            print ''

當(dāng)然還是要引入json

    import json
image

我們可以運(yùn)行看看效果

![](https://raw.githubusercontent.com/hk029/blog/master/爬蟲/動(dòng)態(tài)加載網(wǎng)頁爬取/1461242703391.png" width=400px />

然后,我們可以把信息存到文件或者數(shù)據(jù)庫了拉队,那就是之前學(xué)過的內(nèi)容了弊知。

修改items.py

加入你需要的內(nèi)容

image

修改settings.py

看你是需要存入數(shù)據(jù)庫還是文件,之前都說過了

修改pipelines.py

如果需要加入數(shù)據(jù)庫粱快,這里加上數(shù)據(jù)庫操作秩彤,如果需要寫入文件,可能不用修改這個(gè)文件

修改parse()

把數(shù)據(jù)加入item事哭,然后yield漫雷,大家應(yīng)該很熟悉了

image

但是,這里還只爬了一個(gè)網(wǎng)頁的內(nèi)容鳍咱,對于更多頁面的內(nèi)容降盹,怎么獲取呢?我在下篇博客會(huì)有介紹谤辜,有興趣的童鞋可以自己試試看如果獲取下一頁的內(nèi)容蓄坏,用上面教的查找資源的辦法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末每辟,一起剝皮案震驚了整個(gè)濱河市剑辫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渠欺,老刑警劉巖妹蔽,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挠将,居然都是意外死亡胳岂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門舔稀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乳丰,“玉大人,你說我怎么就攤上這事内贮〔埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵夜郁,是天一觀的道長什燕。 經(jīng)常有香客問我,道長竞端,這世上最難降的妖魔是什么屎即? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上技俐,老公的妹妹穿的比我還像新娘乘陪。我一直安慰自己,他們只是感情好雕擂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布啡邑。 她就那樣靜靜地躺著,像睡著了一般捂刺。 火紅的嫁衣襯著肌膚如雪谣拣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天族展,我揣著相機(jī)與錄音,去河邊找鬼拔鹰。 笑死仪缸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的列肢。 我是一名探鬼主播恰画,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瓷马!你這毒婦竟也來了拴还?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤欧聘,失蹤者是張志新(化名)和其女友劉穎片林,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怀骤,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费封,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒋伦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓摘。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖痕届,靈堂內(nèi)的尸體忽然破棺而出韧献,到底是詐尸還是另有隱情,我是刑警寧澤研叫,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布锤窑,位于F島的核電站,受9級特大地震影響蓝撇,放射性物質(zhì)發(fā)生泄漏果复。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一渤昌、第九天 我趴在偏房一處隱蔽的房頂上張望虽抄。 院中可真熱鬧走搁,春花似錦、人聲如沸迈窟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至男摧,卻和暖如春女阀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贫悄。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娘摔,地道東北人窄坦。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像凳寺,于是被迫代替她去往敵國和親鸭津。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容