Operations 14 min read

What 13,966 Ops Job Listings Reveal About Salary, Skills, and Hot Cities

This article analyzes 13,966 Chinese operations‑engineer job postings scraped from 51job, cleaning the data with Python and Pandas, then visualizing industry demand, city concentration, salary ranges, education requirements, company size distribution, and keyword trends to guide job seekers and recruiters.

Efficient Ops
Efficient Ops
Efficient Ops
What 13,966 Ops Job Listings Reveal About Salary, Skills, and Hot Cities

Introduction

The author collected 13,966 operations‑engineer job postings from 51job, aiming to uncover industry demand, city distribution, salary levels, education requirements, and other hiring trends.

Data Acquisition and Processing

Web Scraping

The data were scraped using XPath on 51job pages; key fields such as job title, company name, location, salary, release date, experience, education, company type, size, industry, and job description were extracted.

# 1、岗位名称
job_name = dom.xpath('//div[@class="dw_table"]/div[@class="el"]//p/span/a[@target="_blank"]/@title')
# 2、公司名称
company_name = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t2"]/a[@target="_blank"]/@title')
# 3、工作地点
address = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t3"]/text()')
# 4、工资
salary_mid = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t4"]')
salary = [i.text for i in salary_mid]
# 5、发布日期
release_time = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t5"]/text()')
# 6、获取二级网址url
deep_url = dom.xpath('//div[@class="dw_table"]/div[@class="el"]//p/span/a[@target="_blank"]/@href')
# 7、爬取经验、学历信息
random_all = dom_test.xpath('//div[@class="tHeader tHjob"]//div[@class="cn"]/p[@class="msg ltype"]/text()')
# 8、岗位描述信息
job_describe = dom_test.xpath('//div[@class="tBorderTop_box"]//div[@class="bmsg job_msg inbox"]/p/text()')
# 9、公司类型
company_type = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[1]/@title')
# 10、公司规模(人数)
company_size = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[2]/@title')
# 11、所属行业(公司)
industry = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[3]/@title')

Data Cleaning

Using Pandas, the CSV was loaded, columns renamed, duplicates removed, and fields standardized (e.g., lower‑casing job titles, mapping city names, parsing salary strings, handling missing company types, splitting industry strings, extracting education levels, and normalizing company size categories).

import pandas as pd
import numpy as np
import re
import jieba

df = pd.read_csv("only_yun_wei.csv",encoding="gbk",header=None)
df.index = range(len(df))
df.columns = ["岗位名","公司名","工作地点","工资","发布日期","经验与学历","公司类型","公司规模","行业","工作描述"]
# Remove duplicates
df.drop_duplicates(subset=["公司名","岗位名","工作地点"],inplace=True)
# Salary parsing function
def get_money_max_min(x):
    try:
        if x[-3] == "万":
            z = [float(i)*10000 for i in re.findall("[0-9]+\.?[0-9]*",x)]
        elif x[-3] == "千":
            z = [float(i)*1000 for i in re.findall("[0-9]+\.?[0-9]*",x)]
        if x[-1] == "年":
            z = [i/12 for i in z]
        return z
    except:
        return x
salary = job_info["工资"].apply(get_money_max_min)
job_info["最低工资"] = salary.str[0]
job_info["最高工资"] = salary.str[1]
job_info["工资水平"] = job_info[["最低工资","最高工资"]].mean(axis=1)

Data Visualization and Findings

Top 10 hiring industries – Computer software, computer services, internet, and telecommunications dominate the demand.

Top 10 cities by posting count – Beijing, Shanghai, Guangzhou, Shenzhen and other first‑tier cities hold the majority of positions, though many listings are for outsourced roles.

Provincial distribution – Guangdong, Jiangsu, Shanghai and Beijing show the highest concentration of postings.

Company size impact – Companies with 50‑500 employees account for over 50% of the demand; larger firms (1,000‑10,000) also have notable hiring.

Average salary of top 10 positions – Roles such as DevOps, Application Ops, Database Ops, and Linux Ops regularly exceed ¥10,000 per month, highlighting the premium for development‑oriented ops positions.

Education requirements – Associate and bachelor degrees dominate; few postings require graduate degrees, suggesting limited entry‑level opportunities for fresh graduates.

Keyword cloud – The most frequent terms are "运维" (operations), "能力" (ability), "系统" (system), "维护" (maintenance), and "经验" (experience), underscoring the high technical and experiential expectations for ops roles.

Conclusion

The analysis shows that operations engineers are in high demand across software, internet, and telecom sectors, especially in first‑tier cities; salaries are attractive for development‑focused roles; and employers prefer candidates with at least an associate degree and solid practical experience.

Pythonoperationsdata cleaningData Visualizationweb-scrapingpandasjob market analysis
Efficient Ops
Written by

Efficient Ops

This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.