日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫某招聘网站的岗位信息

發布時間:2023/12/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫某招聘网站的岗位信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。

作者:阿爾法游戲

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun

故事又要從一個盆友說起

昨晚有個盆友 問我 爬蟲學的怎么樣了?

正當我不明所以之際,盆友的微信語音通話接了進來

友:“看你在學python,爬蟲寫的怎么樣了呀,我想抓一下某招聘網站的數據,能幫我整一個嗎,不行的話我也去看看”

我:“哦哦,你不是技術嘛,自己來嘛

友:“我不是沒怎么接觸過嘛”

我:“行,剛好我也學習下,周末有時間我幫你看下”

簡單介紹下這個朋友吧,游戲圈某技術大拿,真大拿的那種!!


故事聊完了,咱們開工吧

1、前期準備

因為是爬蟲,所以咱們需要用到如下幾個庫

  • requests

  • fake_useragent

  • json

  • pandas

Requests?的介紹是這樣的:?唯一的一個非轉基因的 Python HTTP 庫,人類可以安全享用

反正就是你用來獲取網頁數據需要用到的,本次咱們只需要用到get方法:

res=request.get(url)構造一個向服務器請求資源的url對象, 這個對象是Request庫內部生成的, 這時候的res返回的是一個包含服務器資源的Response對象,包含從服務器返回的所有的相關資源。

fake_useragent?直譯就是 假身份,作用和直譯基本一樣,是個表里不一的“人”

UserAgent是識別瀏覽器的一串字符串,相當于瀏覽器的身份證,在利用爬蟲爬取網站數據時,頻繁更換UserAgent可以避免觸發相應的反爬機制。fake-useragent對頻繁更換UserAgent提供了很好的支持,可謂防反扒利器。

json?就是上期我們本來打算介紹但是換了一個庫實現的 用于處理json數據,可以將已編碼的 JSON 字符串解碼為 Python 對象

pandas?是我們的老朋友了,因為常和excel打交道,對表格的鐘愛,所以pandas在這里主要作用只是將抓取的數據轉化為dataframe型后導出成excel表

導入需要用到的庫

import requests from fake_useragent import UserAgent import json import pandas as pd import time

2、任務分析

其實這步應該在?第1步 前期準備?之前,但是文檔寫到了這里,咱也不想回去了。

這一步很關鍵,主要是思路分析,大致可以分為以下幾點:

  • ?明確你需要的數據是什么

  • ?找到你需要的數據來源

  • ?理清原始數據的結構

  • ?輸出你需要的數據形式

1)明確你需要的數據

比如盆友需要崗位信息,包含哪些字段,常規的有崗位名稱、薪酬范圍、需要的工作年限等等。當你明確需要的數據指標之后,你再去數據來源看是否有這些指標已經如何獲取。

崗位薪酬年限
運營30-50k5-8年
技術30-50k5-8年

2)找到你需要的數據來源

盆友需要的是脈脈上的崗位信息,那么我們需要熟悉脈脈的崗位信息在哪可見,以及它們是如何展示的。

這是移動端

移動端沒法直接獲取url信息,我們可以去pc端看看

這是pc端

這里pc端用的是Google Chrome瀏覽器?為了讓你能夠點開xhr等等,你需要安裝一個瀏覽器工具

下載瀏覽器驅動程序:http://chromedriver.storage.googleapis.com/index.html

查看驅動和瀏覽器版本的映射關系:http://blog.csdn.net/huilan_same/article/details/51896672

pc端是一個列表,我們通過下拉可以加載更多,這說明這個頁面是非靜態頁面,因此在獲取url的時候需要特別注意。

操作流程:

  • 第1步,獲取數據源URL地址:?F12 打開瀏覽器開發者工具調試頁面,選中network——xhr,刷新網頁后選擇 招聘,可以看見右側有刷新調試頁面有內容刷新,選中最近一個刷新的條目即可獲取數據源url地址,見右側的request URL內容即是。

  • 第2步,找到該URL地址規律:?url = 'https://maimai.cn/sdk/company/obtian_company_job?webcid=jYZTTwkX&count=20&page=0&job_title='(你點了應該會提示沒數據),仔細分析,我們可以得到動態變化部分應該為count和page,count表示每頁20個,page表示當前頁數。通過修改count和page后再瀏覽器打開我們驗證了該判斷。

  • 第3步,獲取數據源URL地址:?因為網頁動態,這里建議把cookie記錄下來備用,cookie數據在request Header中。

3)理清原始數據的結構

當我們獲取到數據來源url之后,就需要理清這些原始數據長啥樣,如此才好去解析整理出想要的信息。打開一個url,我們發現是一個json,嗯,很完整的多層json。

網頁json圖

使用json.loads方法做簡單的預處理,然后我們一層一層尋找目標數據指標所在。

【這里我是通過spyder變量管理器 點開數據 讓大家直觀理解】

  • 第一層:字典

  • 第二層:字典

  • 第三層:列表

  • 第四層:字典

4)輸出你需要的數據

通過理清原始數據結構,結合你需要的數據,咱們就可以進行數據簡單過濾選擇了

直接創建一個空字典,存儲你需要的數據信息

3、實現細節

1)材料準備

將url按照規律進行拆分

#url里count和page是變化的規律所在,自選一個進行循環 #因脈脈沒有通用的崗位list匯總頁面,因此如果想獲取其他list可以通過搜索或者查詢指定公司職位后修改url即可 #url = https://maimai.cn/sdk/company/obtian_company_job?webcid=jYZTTwkX&count=20&page=50&job_title=path = 'https://maimai.cn/sdk/company/obtian_company_job?webcid=jYZTTwkX&count=20&page=' tail = '&job_title='#這里需要注意,一定要加cookie,否則將獲取不到數據 headers = {"User-Agent": UserAgent(verify_ssl=False).random,"Cookie":'填入你自己的瀏覽器cookie值'}

2)數據請求

請求數據并用json.load()簡單進行數據類型轉化python對象

#創建空list,用于存儲抓取的崗位信息(字典存儲) list = [] #計數用的變量n n = 0 #因單頁顯示20條崗位信息,所以需要翻頁(實際網頁效果是下拉加載更多) #數據為json,因此需要json.load 解析 for i in range(0,51): #我這里只去前50頁數據url = path + str(i) +tailresponse_comment = requests.get(url,headers = headers)json_comment = response_comment.textjson_comment = json.loads(json_comment)

3)數據篩選

接上個for循環,因為每頁內有20條數據,因此需要再用一個循環取出每條數據并存入一個空字典中,同時將每個字典合到空列表中進行匯總

data = json_comment['data']#單頁顯示20條崗位信息,逐一采集for i in range(len(data['normal_data'])):n = n+1#創建空字典用于存儲單個崗位信息result = {}result['工作年限'] = data['normal_data'][i]['worktime']result['學歷要求'] = data['normal_data'][i]['degree']result['職位描述'] = data['normal_data'][i]['description']result['公司名稱'] = data['normal_data'][i]['company']result['工作地點'] = data['normal_data'][i]['city']result['職位名稱'] = data['normal_data'][i]['position']result['崗位薪酬'] = data['normal_data'][i]['salary_info']result['最近修改時間'] = data['normal_data'][i]['modify_time']result['發布時間'] = data['normal_data'][i]['pub_time']result['瀏覽量'] = data['normal_data'][i]['views']result['發布人職位'] = data['normal_data'][i]['user']['position'].upper()#將崗位信息存入list中 list.append(result)

4)數據導出

直接使用pandas的to_excel方法導出數據成excel

#將存有崗位信息的列表轉化為dataframe表格形式 df = pd.DataFrame(list) df.to_excel(r'F:\Python\崗位數據.xlsx',sheet_name='崗位信息',index = 0

5)結果展示

?

4、完整代碼

import requests from fake_useragent import UserAgent import json import pandas as pd import timestart_time = time.perf_counter()#url里count和page是變化的規律所在,自選一個進行循環 #因脈脈沒有通用的崗位list匯總頁面,因此如果想獲取其他list可以通過搜索或者查詢指定公司職位后修改url即可 #url = https://maimai.cn/sdk/company/obtian_company_job?webcid=jYZTTwkX&count=20&page=50&job_title=path = 'https://maimai.cn/sdk/company/obtian_company_job?webcid=jYZTTwkX&count=20&page=' tail = '&job_title='#這里需要注意,一定要加cookie,否則將獲取不到數據 headers = {"User-Agent": UserAgent(verify_ssl=False).random,"Cookie":'你的cookie'}#創建空list,用于存儲抓取的崗位信息(字典存儲) list = [] #計數用的變量n n = 0 #因單頁顯示20條崗位信息,所以需要翻頁(實際網頁效果是下拉加載更多) #數據為json,因此需要json.load 解析 for i in range(1,2):url = path + str(i) +tailresponse_comment = requests.get(url,headers = headers)json_comment = response_comment.textjson_comment = json.loads(json_comment)data = json_comment['data'] # print('\r正在抓取第%d頁崗位信息(每頁20個崗位)'%i,end=' ')#單頁顯示20條崗位信息,逐一采集for i in range(len(data['normal_data'])):n = n+1#創建空字典用于存儲單個崗位信息result = {}result['工作年限'] = data['normal_data'][i]['worktime']result['學歷要求'] = data['normal_data'][i]['degree']result['職位描述'] = data['normal_data'][i]['description']result['公司名稱'] = data['normal_data'][i]['company']result['工作地點'] = data['normal_data'][i]['city']result['職位名稱'] = data['normal_data'][i]['position']result['崗位薪酬'] = data['normal_data'][i]['salary_info']result['最近修改時間'] = data['normal_data'][i]['modify_time']result['發布時間'] = data['normal_data'][i]['pub_time']result['瀏覽量'] = data['normal_data'][i]['views']result['發布人職位'] = data['normal_data'][i]['user']['position'].upper()#將崗位信息存入list中 list.append(result)print('\r已整合%d個崗位信息'%n,end=' ')use_time = time.perf_counter() print('\n合計運行時長:{0:.2f} 秒'.format(use_time-start_time)) #將存有崗位信息的列表轉化為dataframe表格形式 df = pd.DataFrame(list) df.to_excel(r'F:\Python\脈脈-字節跳動招聘崗位.xlsx',sheet_name='崗位信息',index = 0)

總結

以上是生活随笔為你收集整理的Python爬虫某招聘网站的岗位信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。