Python爬取拉勾网数据并进行数据可视化

拉钩招聘信息爬取以及可视化 本篇文章主要向读者介绍如何爬取像lagou这样具有反爬虫网站上面的招聘信息,以及对于以获取的数据进行可视化处理,如果,我们对于获取的数据不进行可视化处理,那我们获取到的数据就没有发挥它应有的作用。对于数据的获取以及存储我们用到了time、requests、pymysql这三个第三方库;对于数据可视化我们使用到了matplotlib库。 阅读本文章你可能需要的基础/能力 能够对数据库进行基础的操作 能够处理json数据类型 对于爬虫有一定的了解 熟悉requests的请求方法 能够熟悉运用matplotli 阅读详情

爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示、直方图展示、词云展示等并根据可视化的数据做进一步的分析,其余分析和展示读者可自行发挥和扩展包括各种分析和不同的存储方式等。。。。。
在这里插入图片描述

一、爬取和分析相关依赖包

  1. Python版本: Python3.6
  2. requests: 下载网页
  3. math: 向上取整
  4. time: 暂停进程
  5. pandas:数据分析并保存为csv文件
  6. matplotlib:绘图
  7. pyecharts:绘图
  8. statsmodels:统计建模
  9. wordcloud、scipy、jieba:生成中文词云
  10. pylab:设置画图能显示中文

在以上安装或使用过程中可能读者会遇到安装或导入失败等问题自行百度,选择依赖包的合适版本

二、分析网页结构

通过Chrome搜索’python工程师’,然后右键点击检查或者F12,使用检查功能查看网页源代码,当我们点击下一页观察浏览器的搜索栏的url并没有改变,这是因为拉勾网做了反爬虫机制, 职位信息并不在源代码里,而是保存在JSON的文件里,因此我们直接下载JSON,并使用字典方法直接读取数据.即可拿到我们想要的python职位相关的信息,

待爬取的python工程师职位信息如下:

为了能爬到我们想要的数据,我们要用程序来模拟浏览器来查看网页,所以我们在爬取的过程中会加上头信息,头信息也是我们通过分析网页获取到的,通过网页分析我们知道该请求的头信息,以及请求的信息和请求的方式是POST请求,这样我们就可以该url请求拿到我们想的数据做进一步处理

爬取网页信息代码如下:

import requests

url \= ' https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'

def get\_json(url, num):
    """
    从指定的url中通过requests请求携带请求头和请求体获取网页中的信息,
    :return:
    """
    url1 \= 'https://www.lagou.com/jobs/list\_python%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88?labelWords=&fromSearch=true&suginput='
    headers \= {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
        'Host': 'www.lagou.com',
        'Referer': 'https://www.lagou.com/jobs/list\_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=',
        'X-Anit-Forge-Code': '0',
        'X-Anit-Forge-Token': 'None',
        'X-Requested-With': 'XMLHttpRequest'
    }
    data \= {
        'first': 'true',
        'pn': num,
        'kd': 'python工程师'}
    s \= requests.Session()
    print('建立session:', s, '\\n\\n')
    s.get(url\=url1, headers=headers, timeout=3)
    cookie \= s.cookies
    print('获取cookie:', cookie, '\\n\\n')
    res \= requests.post(url, headers=headers, data=data, cookies=cookie, timeout=3)
    res.raise\_for\_status()
    res.encoding \= 'utf-8'
    page\_data \= res.json()
    print('请求响应结果:', page\_data, '\\n\\n')
    return page\_data

print(get\_json(url, 1))

通过搜索我们知道每页显示15个职位,最多显示30页,通过分析网页源代码知道,可以通过JSON里读取总职位数,通过总的职位数和每页能显示的职位数.我们可以计算出总共有多少页,然后使用循环按页爬取, 最后将职位信息汇总, 写入到CSV格式的文件中.

程序运行结果如图:

爬取所有python相关职位信息如下:

三、数据清洗后入库

数据清洗其实会占用很大一部分工作,我们在这里只做一些简单的数据分析后入库。在拉勾网输入python相关的职位会有18988个。你可以根据工作中需求选择要入库的字段,并对一些字段做进一步的筛选,比如我们可以去除职位名称中为实习生的岗位,过滤指定的字段区域在我们指定区域的职位,取字段薪资的平均值,以最低值和差值的四分之一为平均值等等根据需求自由发挥

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from wordcloud import WordCloud
from scipy.misc import imread
from imageio import imread
import jieba
from pylab import mpl

# 使用matplotlib能够显示中文
mpl.rcParams\['font.sans-serif'\] = \['SimHei'\]  # 指定默认字体
mpl.rcParams\['axes.unicode\_minus'\] = False  # 解决保存图像是负号'-'显示为方块的问题
#  读取数据
df = pd.read\_csv('Python\_development\_engineer.csv', encoding='utf-8')

# 进行数据清洗,过滤掉实习岗位
# df.drop(df\[df\['职位名称'\].str.contains('实习')\].index, inplace=True)
# print(df.describe())

# 由于csv文件中的字符是字符串形式,先用正则表达式将字符串转化为列表,在去区间的均值
pattern = '\\d+'
# print(df\['工作经验'\], '\\n\\n\\n')
# print(df\['工作经验'\].str.findall(pattern))
df\['工作年限'\] = df\['工作经验'\].str.findall(pattern)
print(type(df\['工作年限'\]), '\\n\\n\\n')
avg\_work\_year \= \[\]
count \= 0
for i in df\['工作年限'\]:
    # print('每个职位对应的工作年限',i)
    # 如果工作经验为'不限'或'应届毕业生',那么匹配值为空,工作年限为0
    if len(i) == 0:
        avg\_work\_year.append(0)
        # print('nihao')
        count += 1
    # 如果匹配值为一个数值,那么返回该数值
    elif len(i) == 1:
        # print('hello world')
        avg\_work\_year.append(int(''.join(i)))
        count += 1
    # 如果匹配为一个区间则取平均值
    else:
        num\_list \= \[int(j) for j in i\]
        avg\_year \= sum(num\_list) / 2
        avg\_work\_year.append(avg\_year)
        count += 1
print(count)
df\['avg\_work\_year'\] = avg\_work\_year
# 将字符串转化为列表,薪资取最低值加上区间值得25%,比较贴近现实
df\['salary'\] = df\['薪资'\].str.findall(pattern)
#
avg\_salary\_list = \[\]
for k in df\['salary'\]:
    int\_list \= \[int(n) for n in k\]
    avg\_salary \= int\_list\[0\] + (int\_list\[1\] - int\_list\[0\]) / 4
    avg\_salary\_list.append(avg\_salary)
df\['月薪'\] = avg\_salary\_list
# df.to\_csv('python.csv', index=False)

四、数据可视化展示

下面是对数据的可视化展示,仅以部分视图进行一些可视化的展示,如果读者想对其他字段做一些展示以及想使用不同的视图类型进行展示,请自行发挥,注:以下代码中引入的模块见最后的完整代码

1、绘制python薪资的频率直方图并保存

如果我们想看看关于互联网行业python工程师相关的岗位大家普遍薪资的一个分部区间在哪个范围,占据了多达的比例我们就可以借助matplotlib库,来将我们保存在csv文件中的数据进行可视化的展示,然我们能够更直观的看到数据的一个分部趋势

# 绘制python薪资的频率直方图并保存
plt.hist(df\['月薪'\],bins=8,facecolor='#ff6700',edgecolor='blue')  # bins是默认的条形数目
plt.xlabel('薪资(单位/千元)')
plt.ylabel('频数/频率')
plt.title('python薪资直方图')
plt.savefig('python薪资分布.jpg')
plt.show()

运行结果如下:

2、绘制python相关职位的地理位置饼状图

通过地理python职位地理位置的分部我们可以大致了解IT行业主要集中分部在哪些城市,这样也更利于我们选择地域进行选择性就业,可以获得更多的面试机会等,参数可自行调试,或根据需要添加。

# 绘制饼状图并保存
city = df\['城市'\].value\_counts()
print(type(city))
# print(len(city))
label = city.keys()
print(label)
city\_list \= \[\]
count \= 0
n \= 1
distance \= \[\]
for i in city:

    city\_list.append(i)
    print('列表长度', len(city\_list))
    count += 1
    if count > 5:
        n += 0.1
        distance.append(n)
    else:
        distance.append(0)
plt.pie(city\_list, labels\=label, labeldistance=1.2, autopct='%2.1f%%', pctdistance=0.6, shadow=True, explode=distance)
plt.axis('equal')  # 使饼图为正圆形
plt.legend(loc='upper left', bbox\_to\_anchor=(-0.1, 1))
plt.savefig('python地理位置分布图.jpg')
plt.show()

运行结果如下:

3、绘制基于pyechart的城市分布柱状图

pycharts是python中调用百度基于js开发的echarts接口,也可以对数据进行各种可视化操作,更多数据可视化图形展示,可参考echarts官网:https://www.echartsjs.com/,echarts官网提供了各种实例供我们参考,如折线图、柱状图、饼图、路径图、树图等等,基于pyecharts的文档可参考以下官网:https://pyecharts.org/#/,更多用法也可自行百度网络资源

city = df\['城市'\].value\_counts()
print(type(city))
print(city)
# print(len(city))
keys \= city.index  # 等价于keys = city.keys()
values = city.values
from pyecharts import Bar

bar \= Bar("python职位的城市分布图")
bar.add("城市", keys, values)
bar.print\_echarts\_options()  # 该行只为了打印配置项,方便调试时使用
bar.render(path='a.html')

运行结果如下:

4、绘制python福利相关的词云

词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。利用jieba分词和词云生成WorldCloud(可自定义背景),下面就是对python相关职位的福利做了一个词云的展示,可以更直观的看到大多数公司的福利待遇集中在哪些地方

# 绘制福利待遇的词云
text = ''
for line in df\['公司福利'\]:
    if len(eval(line)) == 0:
        continue
    else:
        for word in eval(line):
            # print(word)
            text += word

cut\_word \= ','.join(jieba.cut(text))
word\_background \= imread('公主.jpg')
cloud \= WordCloud(
    font\_path\=r'C:\\Windows\\Fonts\\simfang.ttf',
    background\_color\='black',
    mask\=word\_background,
    max\_words\=500,
    max\_font\_size\=100,
    width\=400,
    height\=800

)
word\_cloud \= cloud.generate(cut\_word)
word\_cloud.to\_file('福利待遇词云.png')
plt.imshow(word\_cloud)
plt.axis('off')
plt.show()

运行结果如下:

五、爬虫及可视化完整代码

完整代码在下面,代码均测试可正常运行,感兴趣的小伙伴可去尝试和了解其中的使用方法,如运行或者模块安装等失败可以在评论区进行留言,让我们一同解决吧

如果你觉得对你有帮助可以点个赞哦,原创内容转载需说明出处!!!

1、爬虫完整代码

为了防止我们频繁请求一个网站被限制ip,我们在爬取每一页后选择睡一段时间,当然你也可以使用代理等其他方式自行实现

import requests
import math
import time
import pandas as pd

def get\_json(url, num):
    """
    从指定的url中通过requests请求携带请求头和请求体获取网页中的信息,
    :return:
    """
    url1 \= 'https://www.lagou.com/jobs/list\_python%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88?labelWords=&fromSearch=true&suginput='
    headers \= {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
        'Host': 'www.lagou.com',
        'Referer': 'https://www.lagou.com/jobs/list\_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=',
        'X-Anit-Forge-Code': '0',
        'X-Anit-Forge-Token': 'None',
        'X-Requested-With': 'XMLHttpRequest'
    }
    data \= {
        'first': 'true',
        'pn': num,
        'kd': 'python工程师'}
    s \= requests.Session()
    print('建立session:', s, '\\n\\n')
    s.get(url\=url1, headers=headers, timeout=3)
    cookie \= s.cookies
    print('获取cookie:', cookie, '\\n\\n')
    res \= requests.post(url, headers=headers, data=data, cookies=cookie, timeout=3)
    res.raise\_for\_status()
    res.encoding \= 'utf-8'
    page\_data \= res.json()
    print('请求响应结果:', page\_data, '\\n\\n')
    return page\_data

def get\_page\_num(count):
    """
    计算要抓取的页数,通过在拉勾网输入关键字信息,可以发现最多显示30页信息,每页最多显示15个职位信息
    :return:
    """
    page\_num \= math.ceil(count / 15)
    if page\_num > 30:
        return 30
    else:
        return page\_num

def get\_page\_info(jobs\_list):
    """
    获取职位
    :param jobs\_list:
    :return:
    """
    page\_info\_list \= \[\]
    for i in jobs\_list:  # 循环每一页所有职位信息
        job\_info = \[\]
        job\_info.append(i\['companyFullName'\])
        job\_info.append(i\['companyShortName'\])
        job\_info.append(i\['companySize'\])
        job\_info.append(i\['financeStage'\])
        job\_info.append(i\['district'\])
        job\_info.append(i\['positionName'\])
        job\_info.append(i\['workYear'\])
        job\_info.append(i\['education'\])
        job\_info.append(i\['salary'\])
        job\_info.append(i\['positionAdvantage'\])
        job\_info.append(i\['industryField'\])
        job\_info.append(i\['firstType'\])
        job\_info.append(i\['companyLabelList'\])
        job\_info.append(i\['secondType'\])
        job\_info.append(i\['city'\])
        page\_info\_list.append(job\_info)
    return page\_info\_list

def main():
    url \= ' https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
    first\_page \= get\_json(url, 1)
    total\_page\_count \= first\_page\['content'\]\['positionResult'\]\['totalCount'\]
    num \= get\_page\_num(total\_page\_count)
    total\_info \= \[\]
    time.sleep(10)
    print("python开发相关职位总数:{},总页数为:{}".format(total\_page\_count, num))
    for num in range(1, num + 1):
        # 获取每一页的职位相关的信息
        page\_data = get\_json(url, num)  # 获取响应json
        jobs\_list = page\_data\['content'\]\['positionResult'\]\['result'\]  # 获取每页的所有python相关的职位信息
        page\_info = get\_page\_info(jobs\_list)
        print("每一页python相关的职位信息:%s" % page\_info, '\\n\\n')
        total\_info += page\_info
        print('已经爬取到第{}页,职位总数为{}'.format(num, len(total\_info)))
        time.sleep(20)
        # 将总数据转化为data frame再输出,然后在写入到csv各式的文件中
        df = pd.DataFrame(data=total\_info,
                          columns\=\['公司全名', '公司简称', '公司规模', '融资阶段', '区域', '职位名称', '工作经验', '学历要求', '薪资', '职位福利', '经营范围',
                                   '职位类型', '公司福利', '第二职位类型', '城市'\])
        # df.to\_csv('Python\_development\_engineer.csv', index=False)
        print('python相关职位信息已保存')

if \_\_name\_\_ == '\_\_main\_\_':
    main()
2、可视化完整代码

数据可视化涉及到matplotlib、jieba、wordcloud、pyecharts、pylab、scipy等等模块的使用,读者可以自行了解各个模块的使用方法,和其中涉及的各种参数

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from wordcloud import WordCloud
from scipy.misc import imread
# from imageio import imread
import jieba
from pylab import mpl

# 使用matplotlib能够显示中文
mpl.rcParams\['font.sans-serif'\] = \['SimHei'\]  # 指定默认字体
mpl.rcParams\['axes.unicode\_minus'\] = False  # 解决保存图像是负号'-'显示为方块的问题
#  读取数据
df = pd.read\_csv('Python\_development\_engineer.csv', encoding='utf-8')

# 进行数据清洗,过滤掉实习岗位
# df.drop(df\[df\['职位名称'\].str.contains('实习')\].index, inplace=True)
# print(df.describe())

# 由于csv文件中的字符是字符串形式,先用正则表达式将字符串转化为列表,在去区间的均值
pattern = '\\d+'
# print(df\['工作经验'\], '\\n\\n\\n')
# print(df\['工作经验'\].str.findall(pattern))
df\['工作年限'\] = df\['工作经验'\].str.findall(pattern)
print(type(df\['工作年限'\]), '\\n\\n\\n')
avg\_work\_year \= \[\]
count \= 0
for i in df\['工作年限'\]:
    # print('每个职位对应的工作年限',i)
    # 如果工作经验为'不限'或'应届毕业生',那么匹配值为空,工作年限为0
    if len(i) == 0:
        avg\_work\_year.append(0)
        # print('nihao')
        count += 1
    # 如果匹配值为一个数值,那么返回该数值
    elif len(i) == 1:
        # print('hello world')
        avg\_work\_year.append(int(''.join(i)))
        count += 1
    # 如果匹配为一个区间则取平均值
    else:
        num\_list \= \[int(j) for j in i\]
        avg\_year \= sum(num\_list) / 2
        avg\_work\_year.append(avg\_year)
        count += 1
print(count)
df\['avg\_work\_year'\] = avg\_work\_year
# 将字符串转化为列表,薪资取最低值加上区间值得25%,比较贴近现实
df\['salary'\] = df\['薪资'\].str.findall(pattern)
#
avg\_salary\_list = \[\]
for k in df\['salary'\]:
    int\_list \= \[int(n) for n in k\]
    avg\_salary \= int\_list\[0\] + (int\_list\[1\] - int\_list\[0\]) / 4
    avg\_salary\_list.append(avg\_salary)
df\['月薪'\] = avg\_salary\_list
# df.to\_csv('python.csv', index=False)

"""1、绘制python薪资的频率直方图并保存"""
plt.hist(df\['月薪'\], bins=8, facecolor='#ff6700', edgecolor='blue')  # bins是默认的条形数目
plt.xlabel('薪资(单位/千元)')
plt.ylabel('频数/频率')
plt.title('python薪资直方图')
plt.savefig('python薪资分布.jpg')
plt.show()

"""2、绘制饼状图并保存"""
city \= df\['城市'\].value\_counts()
print(type(city))
# print(len(city))
label = city.keys()
print(label)
city\_list \= \[\]
count \= 0
n \= 1
distance \= \[\]
for i in city:

    city\_list.append(i)
    print('列表长度', len(city\_list))
    count += 1
    if count > 5:
        n += 0.1
        distance.append(n)
    else:
        distance.append(0)
plt.pie(city\_list, labels\=label, labeldistance=1.2, autopct='%2.1f%%', pctdistance=0.6, shadow=True, explode=distance)
plt.axis('equal')  # 使饼图为正圆形
plt.legend(loc='upper left', bbox\_to\_anchor=(-0.1, 1))
plt.savefig('python地理位置分布图.jpg')
plt.show()

"""3、绘制福利待遇的词云"""
text \= ''
for line in df\['公司福利'\]:
    if len(eval(line)) == 0:
        continue
    else:
        for word in eval(line):
            # print(word)
            text += word

cut\_word \= ','.join(jieba.cut(text))
word\_background \= imread('公主.jpg')
cloud \= WordCloud(
    font\_path\=r'C:\\Windows\\Fonts\\simfang.ttf',
    background\_color\='black',
    mask\=word\_background,
    max\_words\=500,
    max\_font\_size\=100,
    width\=400,
    height\=800

)
word\_cloud \= cloud.generate(cut\_word)
word\_cloud.to\_file('福利待遇词云.png')
plt.imshow(word\_cloud)
plt.axis('off')
plt.show()

"""4、基于pyechart的柱状图"""
city \= df\['城市'\].value\_counts()
print(type(city))
print(city)
# print(len(city))
keys \= city.index  # 等价于keys = city.keys()
values = city.values
from pyecharts import Bar

bar \= Bar("python职位的城市分布图")
bar.add("城市", keys, values)
bar.print\_echarts\_options()  # 该行只为了打印配置项,方便调试时使用
bar.render(path='a.html')

最后这里给大家免费分享一份Python学习资料,包含了视频、源码、课件,希望能够帮助到那些不满现状,想提示自己却又没用方向的朋友,也可以和我一起来交流呀!

编辑资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
在这里插入图片描述
在这里插入图片描述

拉勾网数据爬取 拉勾网数据爬取 爬取内容 北京数据挖掘方向的岗位数据 方案 正常的 https://www.lagou.com/jobs/list_数据挖掘?px=new&city=上海#order 上面的URL是查询上海数据挖掘岗位的信息并按照最新发布排序 通过抓包分析请求的真正URL是这个 https://www.lagou.com/jobs/positionAjax.json 阅读详情

相关推荐

LightGBM处理类别特征和缺失值有多省心?一个真实业务数据案例带你上手

本文通过真实电商数据案例,详细解析了LightGBM如何高效处理类别特征和缺失值。相比传统方法,LightGBM仅需一行代码即可自动处理高基数类别特征和缺失值,大幅提升模型训练效率和预测准确度,特别适合业务场景中的脏数据处理。

weixin_30689307的博客 460

Python爬虫:爬取拉勾网数据分析岗位数据

1 JSON介绍 JSON(JavaScript Object Notation)已经成为通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标准格式之一。比CSV格式更加灵活。Json数据格式,非常接近于有效的Pyhton代码,其特点是:JSON对象所有的键都必须是字符串。 可以通过json.loads()将JSON字符串转化为Python的字典形式,方便对其进行进一步操作。 json.l...

任尔东西 3872

数学:箭头符号→(to)都表示什么意义?

数学符号“→”在不同领域有不同含义:在逻辑中表示“蕴含”(p→q);在函数中表示映射关系(f:A→B);在极限中表示变量趋近(x→a);在推导过程中表示推理方向(A→B)。此外,它也可能用于向量表示或数列趋势。其具体含义需结合上下文判断,核心应用场景包括逻辑运算、函数定义、极限分析和数学推导等。

shunzi2016的博客 5575

爬取拉勾网数据并进行数据可视化

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 以下文章来源于csnd,作者迎风而来 转载地址 https://blog.youkuaiyun.com/fei347795790?t=1 一、爬取和分析相关依赖包 Python版本:Python3.6 requests: 下载网页 math: 向上取整 time: 暂停进程 pandas:数据分析并保存为csv文件 matplotlib:绘图 pyecharts:绘..

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 2265

Vivado图形化界面烧写MCS文件到SPI FLASH全流程(附常见报错解决方案)

本文详细介绍了使用Vivado图形化界面将MCS文件烧录至SPI FLASH的完整操作流程。内容涵盖从环境准备、MCS文件生成到硬件连接与烧写的每一步,并针对SPI总线宽度报错、FLASH型号识别失败等常见问题提供了深度解决方案,帮助用户高效完成FPGA配置,摆脱对TCL命令行的依赖。

s8t9u0v1w的博客 536

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 601

python爬虫: 爬取拉勾网职位并分析

0. 前言 1. 用到的软件包 2. 解析网页 3. 数据清洗 4. 词云 5. 描述统计 6. 实证统计 7. 完整代码 0. 前言 本文从拉勾网爬取深圳市数据分析的职位信息,并以CSV格式保存至电脑, 之后进行数据清洗, 生成词云,进行描述统计和回归分析,最终得出结论. 1. 用到的软件包 Python版本: Python3.6 requests: 下载网...

闲庭信步 1万+

【教程】安装 iterm2 打造漂亮且高性能的 mac 终端

最近电脑重新安装系统,开发环境和软件都需要重新安装和配置,其中终端工具是必不可少的,正好利用这个机会,介绍一下 macOS 终端神器 iTerm2 的安装和配置,并推荐几款好用的插件和工具。在IT领域中,工具的选择和使用对于开发者和运维人员来说至关重要。而在众多终端模拟器中,ITerm2无疑是一个出色的选择,希望本篇的文章能对你有些帮助,感兴趣的朋友可以登录官网查看官方文档。我是刘大大,持续分享AI相关领域的知识和工具,喜欢点点关注。

刘大大AI的博客 3402

python爬取拉勾网数据并进行数据可视化

爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示、直方图展示、词云展示等并根据可视化的数据做进一步的分析,其余分析和展示读者可自行发挥和扩展包括各种分析和不同的存储方式等。。。。。 一、爬取和分析相关依赖包 Python版本: Python3.6 requests: 下载...

a9794666的博客 863

基于PLC的全自动洗衣机控制系统+控制程序

本设计使用PLC控制系统替换了传统的继电器控制系统,实现了全自动洗衣机在硬件方面的提升,丰富了全自动洗衣机在软件方面的功能,提高了全自动洗衣机的洗衣效率,基本可以满足用户的洗衣需求。

zzzz114231的博客 8957

DeerFlow 系列教程 第十八篇 | 实战案例三——用 DeerFlow 构建自定义 AI 工作流

在实际业务中,许多复杂的内容生产任务不是单一技能就能覆盖的。需要先调研某个主题的最新信息基于调研结果撰写结构化的文章或报告对报告中的数据进行可视化处理最终输出符合品牌风格的排版文档或演示文稿这些环节涉及不同的领域知识和工具链,单个内置技能无法完全覆盖。组合自定义技能、MCP 外部工具和多 Agent 协作,构建端到端的工作流。传统手工流程: DeerFlow 自定义工作流:搜索资料、阅读文献 用户描述需求│ │▼ ▼。

weixin_43674738的博客 205

网站数据爬取可视化 python_python爬取拉勾网数据并进行数据可视化

爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示、直方图展示、词云展示等并根据可视化的数据做进一步的分析,其余分析和展示读者可自行发挥和扩展包括各种分析和不同的存储方式等。。。。。一、爬取和分析相关依赖包Python版本: Python3.6requests: 下载网页math: 向上取整t...

weixin_32842959的博客 933

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1248

python爬取拉勾网数据并进行数据可视化!

爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示、直方图展示、词云展示等并根据可视化的数据做进一步的分析,其余分析和展示读者可自行发挥和扩展包括各种分析和不同的存储方式等。。。。。Python学习交流群:1004391443 一、爬取和分析相关依赖包 Python版本: Python3....

Pythoncxy的博客 861

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python爬取岗位数据并分析_Python爬取拉勾网数据分析职位及数据可视化

本来今天打算把以前的爬虫记录复制粘贴过来的,后来想想有点没意思,就想再写一次爬虫,顺便加上之前学的可视化数据分析。有点糊涂,不知道该从哪里说起,也不知道该怎么讲。所以还是按照我自己的爬虫步骤讲吧这里建议用jupyter notebook编辑,方便数据的展示总的步骤就是:①导入模块 ②配置绘图风格 ③反爬 ④开始写爬虫代码 ⑤整合 ⑥绘图大概就是以上这些步骤。①导入包。今天想通过爬取数据绘...

weixin_39866963的博客 206

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python获取拉勾网招聘信息(可视化展示)

1、获取拉勾网招聘信息 首先要明确拉勾网的招聘信息存储网页是post形式的,所以必须填写from_data信息。我们这里填的是from_data = {‘first’:‘true’, ‘pn’:‘1’, ‘kd’:‘设计’},其中pn代表当前页码,kd就是我们搜索的职位关键词。 第二就是记得要用Session 获取动态cookies,否则爬下来的数据空空如也,还容易被封IP封号。 ...

Mr_qing的博客 2983

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

摩拜单车拉勾网php,Python拉勾网数据采集与可视化

全文简介本文是先采集拉勾网上面的数据,采集的是Python岗位的数据,然后用Python进行可视化。主要涉及的是爬虫&数据可视化的知识。爬虫部分先用Python来抓取拉勾网上面的数据,采用的是简单好用的requests模块。主要注意的地方是,拉勾网属于动态网页,所以会用到浏览器的F12开发者工具进行抓包。抓包以后会发现,其实网页是一个POST的形式,所以要提交数据,提交的数据如下图: 真实...

weixin_35982673的博客 310

python爬虫方向_爬虫实战(三) 用Python爬取拉勾网

0、前言最近,博主面临着选方向的困难(唉,选择困难症患者 >﹏<),所以希望了解一下目前不同岗位的就业前景这时,就不妨写个小爬虫,爬取一下 拉勾网 的职位数据,并用图形化的方法展示出来,一目了然整体的 思路 是采用 selenium 模拟浏览器的行为,具体的步骤如下:初始化爬取数据,这里分为两个部分:一是爬取网页数据,二是进行翻页操作保存数据,将数据保存到文件中数据可视化整体的 代码结构 如下:c...

weixin_39689297的博客 450

Python数据可视化:浅谈拉勾网Python爬虫职位

本文从拉勾网上爬取Python爬虫岗位的职位信息和任职要求,并将数据保存到mysql数据库中,最后通过echarts模块实现数据可视化,直观地展示了这个职位的薪资、学历、工作经验和不同城市需求等信息。 author = 小朋友 微信 = qq735833020 关注作者微信公众号,了解更多详情,或获取代码 import requests from lxml import etree import...

小朋友的博客 1714

毕业设计 拉钩网招聘大数据分析与可视化

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩python招聘大数据分析与可视化🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:3分🧿。

HUXINY的博客 1099

pycharm显示全部数据_Python爬取数据写入MySQL实战!

作为一个刚接触mysql的编程中白,本不该在这里大放厥词!但是在跃哥以及群里的朋友们的鼓励下还是在这边准备详细的写一下有关——我的安装mysql后启动mysql遇到的一种bug以及Python将爬取到的数据写入到mysql数据库中,以及从mysql数据库中保存的信息选取部分信息绘制饼状图以及柱状图进行可视化分析!01、windows下安装MySQLMysql是一种关系型数据库,因为比较方...

weixin_39730587的博客 753

[python教程入门学习]就业寒冬,从拉勾招聘看Python就业前景

1.数据采集 事情的起源是这样的,某个风和日丽的下午… 习惯性的打开知乎准备划下水,看到一个问题刚好邀请回答 于是就萌生了采集下某招聘网站Python岗位招聘的信息,看一下目前的薪水和岗位分布,说干就干。 先说下数据采集过程中遇到的问题,首先请求头是一定要伪装的,否则第一步就会给你弹出你的请求太频繁,请稍后再试,其次网站具有多重反爬策略,解决方案是每次先获取session然后更新我们的session进行抓取,最后拿到了想要的数据。 Chrome浏览器右键检查查看network,找到链接https://www

zihong522的博客 200

Python网络爬虫之:selenium + chromedriver 爬取拉勾网 python 所有有关职位

需求分析 本项目旨在完成以下步骤: 爬取拉勾网所有的 python (或者其他职位)信息并按照一定格式写入文件 将所有的信息进行数据的清洗、筛选 对不同省的python职位的薪资进行平均值求算 将不同省份的python薪资标准通过 pyecharts 进行可视化 所以在本文的项目中,只是通过爬虫操作将我们需要的职位信息写入了文件,下一篇文章中,我将通过清理和筛选数据,对不同省的职位的薪资进行平均值的求算。 代码 import time from selenium import webdriver f

qq_42902997的博客 435

基于Python的招聘网站爬虫及可视化的设计与实现

摘 要 I Abstract II 引 言 1 第1章 课题概述 2 1.1 课题内容 2 1.2 课题背景 2 1.3 课题意义 3 1.4 运行环境 3 1.5 相关技术 3 1.5.1 Python语言 3 1.5.2 Flask框架 4 1.5.3 ECharts图表库 4 1.5.4 Jieba库 5 1.5.5 Pysql包 5 1.6 本章小结 5 第2章 系统设计 6 2.1 设计思想 6 2.2 需求分析 6 2.3 系统可行性分析 7 2.4 功能设计 7 2.4.1系统功能结构 7

weixin_40228600的博客 1万+

抓取了招聘信息并告诉你哪种Python 程序员最赚钱

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文章来自腾讯云 作者:Python进阶者 想要学习Python?有问题得不到第一时间解决?来看看这里“1039649593”满足你的需求,资料都已经上传至文件中,可以自行下载!还有海量最新2020python学习资料。 点击查看 本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位,从拉勾网上爬取了相应的职位信息和

weixin_49345590的博客 214
上一篇: Python入门基础!
下一篇: Python格式化字符串
Python_trys
博客等级 码龄2年 4380粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值