数据分析 — 招聘数据爬取和分析

一、数据获取

需求:

招聘数据获取地址:https://careers.tencent.com/home.html

获取字段:岗位的名称、岗位职责、发布时间

import pandas as pd  # 导入 Pandas 库并使用别名 pd  
import requests  # 导入 requests 库,用于进行 HTTP 请求  
import time  # 导入 time 模块,用于处理时间相关操作  
import json  # 导入 json 模块,用于处理 JSON 数据  
import random  # 导入 random 模块,用于生成随机数

# 初始化一个空列表,用于存储招聘信息
lst = []
# 获取当前时间戳,乘以1000是为了将秒转换为毫秒
timestamp = int(time.time() * 1000)
# 获取用户输入的关键词和要爬取的数据页数
keyword = input('请输入要搜索的关键词:')
pageIndex = int(input('请输入要爬取的数据页数:'))

# 设置请求头,模拟浏览器访问
head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

# 遍历每一页数据
for page in range(1, pageIndex + 1):
    # 构建请求 URL,使用 f-string 格式化字符串,将关键词和页数嵌入 URL 中
    url = f"https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={timestamp}&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword={keyword}&pageIndex={page}&pageSize=10&language=zh-cn&area=cn"
    # 打印当前请求的 URL
    print(url)
    
    # 发送 GET 请求获取数据
    res = requests.get(url=url, headers=head)
    # 将返回的内容解码为 UTF-8 格式的字符串
    result = res.content.decode('utf-8')
    # 随机等待1到5秒,模拟人为操作,防止被网站封 IP
    time.sleep(random.randint(1, 5))
    # 将返回的 JSON 字符串解析为字典
    content_dict = json.loads(result)
    # 打印解析后的字典内容
    print(content_dict)

    # 获取招聘信息列表
    post_list = content_dict['Data']['Posts']
    # 遍历招聘信息列表
    for value_dict in post_list:
        # 创建一个字典,存储招聘信息的相关字段
        dic = {}
        dic['LastUpdateTime'] = value_dict['LastUpdateTime']
        dic['RecruitPostName'] = value_dict['RecruitPostName']
        dic['Responsibility'] = value_dict['Responsibility']
        PostId = value_dict['PostId']
        # 将字典添加到列表中
        lst.append(dic)

# 将列表转换为 DataFrame
data = pd.DataFrame(lst)
# 打印 DataFrame
print(data)

# 将 DataFrame 保存为 CSV 文件,index=False 表示不保存行索引
data.to_csv('./招聘数据.csv', index=False)

二、词云图语法

1、jieba 分词

jieba 是一款用于中文分词的开源 Python 库。中文分词是将一段中文文本切割成有意义的词语的过程,是中文文本处理的基础步骤之一。jieba 库被广泛用于中文自然语言处理(NLP)任务,如文本分析、情感分析、关键词提取等。

安装和导入

pip install jieba

import jieba # 导入 jieba 库,用于中文分词

import jieba  # 导入 jieba 库,用于中文分词
# 文本
text = "今天生活很美好。"

# 精确模式分词:把文本精确的切分开,不存在冗余单词。
seg_list = jieba.cut(text, cut_all=False)
# 输出分词结果
print("精确模式:", "/ ".join(seg_list))  # 精确模式: 今天/ 生活/ 很/ 美好/ 。

# 全模式分词:把文本中所有可能的词语都扫描出来,有冗余。
seg_list = jieba.cut(text, cut_all=True)
# 输出分词结果
print("全模式:", "/ ".join(seg_list))  # 精确模式: 今天/ 生活/ 很/ 美好/ 。

# 搜索引擎模式分词:在精确模式基础上,对长词再次切分。
seg_list = jieba.cut_for_search(text)
# 输出分词结果
print("搜索引擎模式:", "/ ".join(seg_list))  # 搜索引擎模式: 今天/ 生活/ 很/ 美好/ 。

2、词云图

import numpy as np  # 导入 NumPy 库,用于处理图像
import pandas as pd  # 导入 Pandas 库并使用别名 pd
import jieba  # 导入 jieba 库,用于中文分词
from wordcloud import WordCloud  # 导入 WordCloud 类,用于生成词云图
from PIL import Image  # 导入 Image 模块,用于处理图像
from matplotlib import colors  # 导入 colors 模块,用于设置颜色映射

# 设置数据文件路径
path = r'F:\data\招聘数据.csv'
# 读取 CSV 文件并使用 ANSI 编码格式
data = pd.read_csv(path, encoding='utf-8')
# 打印读取到的数据
print(data)

# 创建空列表 res_list 用于存储职责信息
res_list = []
# 初始化字符串 st 为空字符串
st = ''

# 定义函数 chinese_jieba
def chinese_jieba():
    # 遍历数据列 'Responsibility' 中的每个元素,并将其转换为字符串后添加到 res_list 中
    for i in data['Responsibility']:
        res_list.append(str(i))
    # 将 res_list 中的字符串用空字符串连接起来
    st2 = st.join(res_list)
    # 使用 jieba 分词对连接后的字符串进行分词,返回分词后的字符串
    wordlist_data = jieba.lcut(st2)
    txt_jieba = " ".join(wordlist_data)
    return txt_jieba
# 打印使用 jieba 分词后的字符串
print(chinese_jieba())

# 定义函数 stopwords_read 用于读取停用词表
def stopwords_read():
    # 增加停用词
    stopwords_ = ['负责', '腾讯', '优化', 'learning']
    # 打开停用词文件,逐行读取并将非空行的内容加入停用词列表 stopwords_
    with open(r'F:\data\stopwords.txt', encoding='utf-8') as f:
        for line in f:
            if len(line) > 0:
                stopwords_.append(line.strip())
    return stopwords_

# 定义函数 wordcloud_generate 生成词云图
def wordcloud_generate():
    # 调用 stopwords_read 函数获取停用词列表
    stopwords_ = stopwords_read()
    # 调用 chinese_jieba 函数获取分词后的字符串
    txt = chinese_jieba()
    # 读取背景图片并转换为 NumPy 数组
    background_image = np.array(Image.open(r'F:\data\心形.png'))
    # 定义颜色映射
    colormaps = colors.ListedColormap(['blue', 'green', 'yellow', 'red', 'pink'])
    # 使用 WordCloud 类生成词云图
    wordcloud = WordCloud(
        width = 1000,  # 图片的宽度,默认为400
        height = 800,  # 图片的高度,默认为200
        background_color = 'lightblue',  # 图片的背景颜色,默认为黑色
        max_words = 100,  # 最大词数,默认为 200
        contour_color = 'steelblue',  # 词云图的轮廓颜色,默认为'black'
        contour_width = 2,  # 词云图的轮廓宽度,默认为2
        max_font_size = 400,  # 最大字体大小,默认为None
        min_font_size = 4,  # 最小字体大小,默认为4
        prefer_horizontal=0.99,  # 文字的方向,默认值是 0.9
        font_step = 1,  # 字体步⻓,增加该值会使字体大小增加的更平滑,默认为1
        font_path = 'simhei.ttf',  # 字体文件路径,用于中文显示
        random_state = None,  # 用于生成随机颜色,保证每次生成的词云图颜色⼀致
        colormap = colormaps,  # 颜色映射表,默认为'viridis'
        stopwords = stopwords_,  # 自定义停用词表,可以是列表或者集合
        mask = background_image,  # 词云形状的遮罩图,可以是numpy数组或图像文件路径
        scale = 1,  # 比例尺寸,默认为1,增大该值会增加生成图片的分辨率
        repeat = False,  # 是否重复词语,默认为False,如果为True,同样的词语会显示多次
        collocations = False,  # 是否包括两个词的搭配,默认为True
        regexp = None,  # 用于分词的正则表达式,默认为None
        min_word_length = 1,  # 最小词语⻓度,默认为1
        mode = 'RGB',  # 图片模式,可以为'RGB'或'RGBA'
        relative_scaling = 'auto',  # 词频相对大小的缩放因子,默认为'auto'
    ).generate(txt)
    # 将词云图保存为图片文件
    wordcloud.to_file('./词云图.jpg')
    # 显示词云图
    image = wordcloud.to_image()
    image.show()

# 如果该脚本是主程序,则执行 wordcloud_generate 函数
if __name__ == "__main__":
    wordcloud_generate()

在这里插入图片描述

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是非常流行的数据分析和爬虫工具。借助Python爬取招聘网站源码和数据分析是一项非常常见的任务。Python有许多第三方库和工具可供使用,使得编写Web爬虫和抓取网页数据变得容易。 要开始爬取招聘网站,首先要选择一个目标网站并了解其结构和内容。一旦你确定了要爬取的网站,你可以使用Python中的Requests和BeautifulSoup库来下载并分析网页源码。BeautifulSoup是一个Python库,可以从HTML和XML文档中提取数据。使用BeautifulSoup可以轻松地分析HTML页面并提取所需的信息。Python的Requests库使得从网站抓取数据非常容易。使用Requests库,您可以轻松地下载HTML页面以及其他网站资源,例如图像。 当你获得了网站的源代码并从中提取所需的数据,你可以使用Pandas数据分析库来对这些数据进行分析和操作。Pandas可以轻松地从各种数据源中读取和处理数据,而且是Python数据科学领域中最流行的库之一。您可以使用Pandas来对数据进行切片,切块,过滤和排序,还可以使用广泛的数据建模和分析工具进行进一步的探索。 总的来说,使用Python对招聘网站进行数据爬取分析是一项非常有趣和有用的任务。Python的第三方库和工具提供了强大且易于使用的方法来从HTML源代码中提取所需的数据,并使用Pandas进行分析和建模,使得这项任务变得更加容易和有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值