python爬蟲獲取拉鉤網在線搜索招聘信息(超實用!)

        在之前的博客《用python爬蟲製作圖片下載器(超有趣!)》中,小菌爲大家分享瞭如何製作一個快捷便利的圖片下載器。本次分享,小菌爲大家帶來的同樣是關於爬蟲程序方面的分享——獲取拉勾網在線搜索消息。話不多說,直接上代碼!

# -*- encoding: utf-8 -*-
"""
@File    : 拉勾網在線搜索招聘信息(手動).py
@Time    : 2019/10/27 14:27
@Author  : 封茗囧菌
@Software: PyCharm

      轉載請註明原作者
	  創作不易,僅供分享
 
"""
#  導入相應的包
import requests
import time
import json
from urllib.parse import quote

def get_page(url_start,url_parse,params,job):
   #  創建一個session對象
   s = requests.Session()
   #  用session對象發出get請求,請求首頁獲取cookies
   s.get(url_start, headers=headers, timeout=3)
   #  獲取此處的cookie
   cookie = s.cookies
   #  獲取此次的文本
   response = s.post(url_parse, data=params, headers=headers, cookies=cookie, timeout=3)

   #  設置每次請求間隔5秒鐘
   time.sleep(5)
   #  獲取json格式的數據
   json_data = json.loads(response.text)
   #  從json數據中獲取到數據的總數
   total_Count = json_data['content']['positionResult']['totalCount']

   print("搜索結果一共有:"+str(total_Count)+"條")

   '''
      拉勾網每頁是15條數據,默認只有30頁的信息,如果抓取信息的總數/15>30,就取30頁
   '''
   if int(total_Count/15) < 30 :
       page_number = int(total_Count/15)
   else:
       page_number = 30

   #  根據頁數決定方法調用的次數
   for pn in range(1, page_number + 1):
       get_info(url_start, url_parse, pn, job)
       print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")


def get_info(url_start,url_parse,page_number,job):
    print("正在爬取第"+str(page_number)+"頁數據")
    data = {
        'first': 'false',
        'pn': page_number, # 頁數
        'kd': job  # 搜索的關鍵字
    }

    #  創建一個session對象
    s = requests.Session()
    #  用session對象發出get請求,請求首頁獲取cookies
    s.get(url_start, headers=headers, timeout=3)
    #  獲取此處的cookie
    cookie = s.cookies
    #  獲取此次的文本
    response = s.post(url_parse, data=data, headers=headers, cookies=cookie, timeout=3)
    #  設置爬蟲休眠5秒
    time.sleep(5)
    #  整理json格式
    text = json.loads(response.text)
    #  獲取信息列表
    info = text['content']['positionResult']['result']

    for i in info :
        # 獲取公司id
        print('公司id', i['companyId'])
        # 獲取公司全名
        print('公司全名', i['companyFullName'])
        # 獲取位置
        print('位置', i['city'])
        # 獲取薪資
        print('薪資', i['salary'])
        # 獲取公司規模
        print('公司所在人數', i['companySize'])
        # 獲取要求技能
        print('所需技能', i['skillLables'])
        # 招聘信息發佈時間
        print('信息發佈時間', i['createTime'])
        # 區域
        print('所在區域', i['district'])
        # 要求學歷
        print('要求學歷', i['education'])
        #  車站名稱
        print('車站名稱', i['stationname'])
        print("===========================================================")









if __name__ == '__main__':      #  主程序入口


    job = input("歡迎來到拉勾網,請輸入您想諮詢的職位:")

    # 想要在URL中拼湊中文,需要將中文內容進行【轉碼】,用16進製表示
    job_transcode = quote(job)
    print("job", job_transcode)

    #  主url【要爬取數據頁面首頁】
    url_start = "https://www.lagou.com/jobs/list_"+job_transcode+"/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput="

    #  ajax請求
    url_parse = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"

    print(url_start)

    params = {
        'first': 'true',
        'pn': '1',
        'kd': job
    }

    # 加入請求頭,僞裝成瀏覽器
    headers = {
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Referer': 'https://www.lagou.com/jobs/list_'+job_transcode+'/p-city_undefined?&cl=false&fromSearch=true&labelWords=&suginput=',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
    }

    get_page(url_start, url_parse, params, job)

效果圖
在這裏插入圖片描述
        細心的小夥伴可能發現了,這次的爬蟲程序跟上次分享的圖片下載器完全不是一個級別的,怎麼那麼多處代碼看不懂 ̄へ ̄其實很正常啦,因爲爬蟲的下限很低,上限極高。(如果每個網站的數據都那麼好獲取,那讓該網站背後的程序員情何以堪)可能對於初學爬蟲不久的學者來說,理解該次爬蟲的過程比較的困難。但莫言先生曾經說過:

當你的才華還撐不起你的野心的時候,

你就應該靜下心來學習;

當你的能力還駕馭不了你的目標時,

就應該沉下心來,歷練。

        流年笑擲 未來可期!本次的分享就到這裏,後續小菌還會推出更多有趣的爬蟲,喜歡的小夥伴不要忘了點贊關注小菌~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章