爬蟲學習筆記(2)使用MongoDB保存拉鉤數據

生苦短,我用Pythonpython

一、什麼是MongoDB數據庫

MongoDB是一個高性能,開源,無模式的文檔型數據庫json

MongoDB將數據存儲爲一個文檔,數據結構由鍵值(Key=>value)對組成數據結構

二、MongoDB相關安裝dom

Windows的安裝方法:能夠借鑑小歪老師的知乎專欄:MongoDB及可視化工具的安裝中給出了詳細的MongoDB數據庫、可視化工具RoboMongo和MongoDB的PyCharm插件--Mongo Plugin的安裝步驟和方法,可按照步驟安裝並測試鏈接,本人也是按照該教程一步一步操做的。實驗都是成功的。工具

三、Python用於操做MongoDB的第三方庫pymongo安裝:post

我這裏是已經安裝過了,因此是這樣的提示,若是未安裝,則是大體提示你安裝成功的英文。性能

這裏說下pip,我剛開始使用pip安裝包的時候,一直提示未能識別pip,最後我找到python的安裝目錄下:C:\Users\XXXX\XXX\XXX\XXX\Python\Python35\Scripts下,shift+鼠標右擊,在此處打開命令窗口,再使用pip install pymongo就成功了。測試

preview

preview

須要這樣使用pip是由於我沒有設置環境變量的緣由。若是每次都是這樣使用pip安裝包很麻煩,因此若是你想每次隨便在哪裏打開cmd.exe都能pip安裝包,則須要配置下環境變量:網站

配置流程:個人電腦(或計算機)-->右鍵屬性-->高級系統設置-->環境變量-->系統變量-->path-->點擊編輯-->將在剛纔shift+右鍵地方的地址複製到裏面,在隨便在一個地方打開cmd.exe,輸入pip均可以安裝包了。

preview


四、爬取拉鉤網爬蟲工程師數據並保存到MongoDB中

一、分析網頁:想要爬取一個網站,首先必須去分析改網頁的請求結構和返回結果結構。


由上圖分析可知:請求url和請求方式post。

preview

由上圖可知:請求所須要的Cookie、Referer、和User-Agent。這些都是請求須要的參數。

preview

點擊response,能夠看到該請求返回值,這樣看不方便,咱們能夠全選複製,用json轉換工具看一下:


preview

preview

由上圖分析可知請求的參數:first:是不是第一頁,pn:當前頁數,kd:搜索關鍵字

preview

由截圖分析可知,返回結果中content-->positionResult-->result中數據是我所須要的。

代碼實現:

import requests
from pymongo import MongoClient
import time
from fake_useragent import UserAgent
client=MongoClient()
db=client.lagou
lagou=db.Reptile #建立Reptile集合,用於保存爬取到的數據集合

headers={
    'Cookie':'',#此處寫入你分析所得的Cookie
    'Referer':''#此處寫入你分析所得的Referer
}

def get_job_info(page,kd):#加入一個職位參數kd
    for i in range(page):
        url=''#此處寫入你分析後所得的請求url
        payload={
            'first':'true',#是不是第一頁參數
            'pn':i,#當前頁數。起翻頁做用
            'kd':kd #關鍵字
        }

        ua=UserAgent()#定義生成隨機User-Agent的實例對象
        headers['User-Agent']=ua.random #使用fake-Agent隨機生成User-Agent,添加到headers
        response=requests.post(url,data=payload,headers=headers)#獲取請求結果

        if(response.status_code==200):
            job_json=response.json()['content']['positionResult']['result']#取出須要的數據
            lagou.insert(job_json)#保存到MongoDB數據
        else:
            print('請求錯誤!')

        print('正在爬取'+str(i+1)+'頁的數據...')

if __name__=='__main__':
    get_job_info(7,'爬蟲')複製代碼

MongoDB保存數據成功後的結構以下圖 所示:

相關文章
相關標籤/搜索