本次筆記主要記錄了本人利用python編寫爬蟲對拉勾網(wǎng)的數(shù)據(jù)分析師崗進行爬取,因為打算從事數(shù)據(jù)分析師這個職業(yè),所以想對這個職業(yè)進行一個數(shù)據(jù)分析。
首先進行數(shù)據(jù)分析第一步是要獲取數(shù)據(jù),我選擇了從拉勾網(wǎng)進行數(shù)據(jù)爬取。本次運用到的知識主要是python, html, json。
先進入拉勾網(wǎng)并用Chrome瀏覽器的開發(fā)者工具對頁面進行觀察。

觀察發(fā)現(xiàn)其實標(biāo)簽內(nèi)部數(shù)據(jù)并不是特別完整,很多數(shù)據(jù)都被藏在了元素內(nèi)部,這樣想通過Xpath提取會變得非常麻煩和困難,因此嘗試其他方法,拉勾網(wǎng)具有反爬技術(shù),為了防止盜鏈,采用了json頁面?zhèn)鬏敂?shù)據(jù),因此我選擇去采集json數(shù)據(jù)。



發(fā)現(xiàn)有完整json數(shù)據(jù),因此開始編寫爬蟲代碼對數(shù)據(jù)進行爬取。
首先要設(shè)置要訪問的url網(wǎng)址和請求頭文件。url網(wǎng)址是要爬取的頁面域名,請求頭文件則是訪問網(wǎng)站時訪問者的一些信息,例如用戶名,所用瀏覽器,訪問源頭等,如果不設(shè)置頭文件,則很大程度會因為訪問頻度過高被當(dāng)作機器人而封殺ip。
先通過開發(fā)者工具獲取url地址。

隨后再通過開發(fā)者工具獲取請求頭文件Request Headers。其中主要是獲取User-Agent, Referer 和Cookie。

將以上內(nèi)容分別寫入代碼中。

在發(fā)送請求的時候有兩種發(fā)送參數(shù)方式,一種是get,另一種是post。post會以表格發(fā)送的方式發(fā)送給響應(yīng)端,無法直接在鏈接中賦值,因此需要設(shè)置一個字典來作為表格數(shù)據(jù)發(fā)送給響應(yīng)端。從開發(fā)者工具中可以看到表格內(nèi)部的結(jié)構(gòu)和信息。

因此構(gòu)建一個字典用來存儲參數(shù)數(shù)據(jù)。

這里使用request包來發(fā)送請求。

發(fā)送請求后會得到一個response,同時為了避免編碼錯誤要先將response的編碼設(shè)置為utf-8。然后利用json包用的json.loads()方法將取得的response轉(zhuǎn)化為字典格式。根據(jù)先前對json結(jié)構(gòu)分析,要進入到嵌套字典的最內(nèi)部才能取得一個result的list。

在取出list以后將值返給函數(shù)并進入數(shù)據(jù)提取階段。
設(shè)置一個字典用以存儲所要保存的值。

隨后開始批量提取并存儲數(shù)據(jù)。

在主函數(shù)中對每一頁進行上述操作的循環(huán)。

通過改變data中pn的值來進行翻頁,同時在循環(huán)結(jié)束后,先將字典轉(zhuǎn)為DataFrame格式,再用DataFrame中的內(nèi)置方法進行處理并導(dǎo)出為csv格式文件。最終獲取的文件可以用excel打開后效果如下。

由于編碼為utf-8因此Excel無法直接讀取,在此將文件格式轉(zhuǎn)為ansi以后,再次打開如下。

本章結(jié)束,下一章將講解如何用Excel進行數(shù)據(jù)清洗和數(shù)據(jù)分析。