爬取boss直聘全國招聘數據並做可視化 - Python


正文:今天來爬一下boss直聘上關於python在全國的招聘崗位。

開發環境:

  • python 3.7.9
  • pycharm

用到的庫:

  • pandas
  • csv
  • selenium
  • pyecharts (做可視化的時候用到)

爬蟲以及保存csv文件的代碼:

"""
    爬取boss直評數據
"""

import pandas as pd
import csv
from selenium import webdriver

f = open('boss直聘修復數據.csv', mode='a', encoding='utf-8-sig', newline='')

csvWriter = csv.DictWriter(f, fieldnames=[
    '標題',
    '地區',
    '薪資',
    '經驗',
    '學歷',
    '公司名',
    '公司領域',
    '福利',
    '是否上市',
    '公司規模',
    '詳情頁',
    '所在城市',
    '需具備技能',
])

csvWriter.writeheader() # 先在csv文檔中寫入頭

# 初始化瀏覽器
browser = webdriver.Chrome() #
url = 'https://www.zhipin.com/c100010000/?query=python&page=8&ka=page-8' # 就爬一頁,可以循環爬取所有頁
browser.get(url) # 加載網頁
browser.implicitly_wait(10) # 全局等待10秒,等到網頁加載完成

def get_job_details():
    lis = browser.find_elements_by_css_selector('.job-list li') # 找到招聘信息列表
    for item in lis: #開始讀取信息
        # 標題
        title = item.find_element_by_css_selector('.job-name a').get_attribute('title')
        # 地區
        area = item.find_element_by_css_selector('.job-area').text
        # 將地區處理為城市
        chengshi = area[0:2]
        # 薪資
        salaray = item.find_element_by_css_selector('.job-limit .red').text
        # 經驗 和學歷
        expdata = item.find_element_by_css_selector('.job-limit p').text
        # 拆分expdata,將它拆分為經驗和學歷
        jingyan = expdata[0:4] # 無論是經驗不限還是1-3年都是四個字符
        xueli = expdata[-2:] # 取字符串的最后兩字
        # 公司名
        companyName = item.find_element_by_css_selector('.company-text .name a').text
        # 公司類型
        companyStyle = item.find_element_by_css_selector('.company-text p a').text
        # 福利
        descforworker = item.find_element_by_css_selector('.info-append .info-desc').text
        # 是否已經上市和公司人數
        ipoeddata = item.find_element_by_css_selector('.company-text p').text # 這里的字符需要處理下
        # isipoed = ipoeddata[0].text
        # companyWorkers = ipoeddata[1].text
        # 詳情頁
        detailPage = 'https://www.zhipin.com/' + item.find_element_by_css_selector('.job-name a').get_attribute('href')
        suozaichengshi = chengshi

        # 所需技能
        skillsneed = item.find_element_by_css_selector('.info-append .tags').text

        dit = {
            '標題':title,
            '地區':area,
            '薪資':salaray,
            '經驗':jingyan, #可能需要拆分
            '學歷':xueli,
            '公司名':companyName,
            '公司領域':companyStyle,
            '福利':descforworker,
            '是否上市':ipoeddata, # 未處理數據
            '公司規模':ipoeddata, # 未處理數據
            '詳情頁':detailPage,
            '所在城市':area[0:2],
            '需具備技能':skillsneed,
        }
        print(dit) # 打印是否符合預期

get_job_details() # 運行下看是否符合預期
browser.close() # 關閉瀏覽器

 

保存后的數據如下:

 

可視化用pyecharts做,方向主要有:

  • 每個城市招聘該職位數量的柱狀圖
  • 求取下平均工資最高的城市
  • 經驗學歷餅圖
  • 上市公司占比餅圖
  • 公司規模(人數)占比圖
  • 公司行業分布圖
  • 需要的技能餅圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM