基于Python 爬虫的数据分析
作者:杨 登 袁 芳
来源:《中国新通信》 2020年第18期
    杨登  上海大学机电工程与自动化学院
    袁芳  成都地铁运营有限公司维保分公司工电分部
    【摘要】  目前互联网发展日新月异,网上的数据成千上万。如何高效、快速的获取网上数据,通过可视化处理从多个维度挖掘数据的隐藏信息,从而为生活提供指导和帮助是件重要的事情。在此背景下,本文从Python语言简洁多元的第三方库入手,利用selenium爬取招聘网站数据,Pandas库数据清洗处理,Matplotlib,Wordcloud进行数据的可视化,挖掘到有用的数据信息,对目前上海Python工作岗位的就业有所帮助和指导。
    【关键词】  Python  爬虫  数据分析  可视化
    Analysis of data analysis based on Python crawle
    YangDeng  School of Mechatronic Engineering and Automation, Shanghai University,Chengdu, 610000, China;YuanFang  Maintenance branch of Chengdu Metro Operation Co., Ltd, Chengdu, 610000,China
    Absrtact: At present, with the rapid development of the Internet, there are thousands of data on the Internet. How to efficiently and quickly obtain online data, through visual processing from multiple dimensions of data mining hidden information, so as to provide guidance and help for life is an important thing. In this context, this paper starts with the concise and diversified third-party library of Python language, uses selenium to crawl the recruitment website data, pandas library data cleaning, Matplotlib, wordcloud to visualize the data, and excavate useful data information, which is helpful and guidance for the current employment of Python jobs in Shanghai.
    Keywords: Python, crawler, data analysis, visualization
    引言
    随着数据时代到来,目前数据的信息挖掘分析是各行各业的热点,通过数据的挖掘分析,可以在枯燥的数据下发现潜在有用的信息或规则,进而转化为有价值的信息或知识,帮助决策者做出恰当的决策。本文数据源来自面向互联网岗位的“拉勾网”,以“Python”词条获取“上海地区”的招聘信息数据,通过Pyth
on 语言的第三方库selenium实现数据的爬取。之后用pandas库对数据清洗、除噪,再从多个角度对数据进行分析处理。而人对图片或图像敏感度高,为了数据能更好的展现出差别和特点,再把结果数据利用matplotlib,wordcloud进行可视化和美化处理,提高数据的可读性,直观表现出数据的主旨信息。
    一、网络爬虫及数据存储
    1.1 selenium简介
    网络爬虫,又称网络蜘蛛和网络机器人,可以从网页上自动下载数据的代码程序。爬虫程序可以自动解析和传输网页数据,并将这些数据进行分析下载。Python 具有丰富的网络爬虫模块,具有很强的可扩展性与可嵌入性,其中selenium库是一个以Google浏览器为驱动的网页自动化测试工具,它能完全模拟用户手动操作网页的过程,并展现在浏览器界面上,操作十分方便。
    1.2数据爬取
    通过selenium库,首先login()函数账号,到Python岗位的网页链接,然后通过get_datas()函数操作网页翻页并获取工作岗位的关键信息“岗位名称,公司名称,,经验要求,学历,薪资待遇,发布时间”等7条信息。部分代码如下:
    def login(u,name,word):
    # u:登陆网页链接,name:用户名,word:密码
    (u)
    brower.find_element_by_xpath(‘//*[@id=”changeCityBox”]…’).click() 
      ……
    def get_datas(u,n,table):
      #u:python岗位网页链接,n:网页页数,table: PyMongo
      ……
    二、数据处理
    2.1 Pandas简介
    Pandas是Python的第三方数据分析库,它基于NumPy创建,提供了大量数据分析处理的函数和方法,具有快速灵活,功能强大的特点,是一个快速分析处理数据的工具。
    2.2 数据处理
    首先将爬取的数据用pandas转换为DataFrame格式来进行数据处理,代码如下:
    datadf=pd.DataFrame(datalst)
    之后再对datadf中的数据进行数据清洗处理得到266条数据,再从多个维度和角度对数据分析处理。
    2.2.1地区-平均薪资
    这组数据为上海各地区对应的岗位数量及平均薪资。因为网站的薪资都为一个区间数据,如8K-15K。此时,先算出每个岗位对应的平均薪资,之后再得到上海各地区对应的岗位数量及平均工资,部分代码如下:
    data[‘薪资待遇’]=data[‘薪资待遇’].place(‘k’,’’)
    ……
    data[‘薪资待遇ave’].groupby(data[‘’]).mean()
    2.2.2其他数据
    不同工作经验对应的平均薪资和工作岗位对学历要求,代码如下:
    data[‘薪资待遇ave’].groupby([data[‘经验要求’]]).mean()
    upby([‘学历’]).size()
    三、可视化处理
    3.1 Wordcloud图
    Wordclound也叫词云图,可以对文本进行分词,再对出现频率较高的“关键词”予以彩和大小的视觉化展现,使读者通过文本信息中的关键词语获取主旨信息。
    本次对Python的岗位名称进行词云分析,核心代码如下:
    w=wordcloud.WordCloud(font_path=””,collocations=False,width=1500,height=900,background_color=”white”,max_words=150)
    w.generate(text)
    ……
    生成的词云图如下图1:
   
    从图1可以看出,Python岗位对开发工程师需求最多,其次是后端,爬虫,研发,数据等方面的岗位也有需求,说明Python的岗位需求是比较多元的。从“高级、资深、专家”看出,目前招聘市场对工程师有一定的经验要求,说明企业喜爱有经验的应聘者,可以快速上手工作创造效益。从“实习生”可以看出企业对于应届生或经验较少的应聘者以实习生的待遇进行培养和工作。
    3.2 Matplotlib
    Matplotlib是Python常用的数据绘图包,绘图风格类似MATLAB,绘图功能强大,种类丰富,比如散点图,折线图,条行图,饼图等。通过Matplotlib对“2.2数据处理”中的不同数据组进行对应类型的可视化处理。
    不同地区对应岗位数量及平均薪资如图2,部分代码如下:
    for x1, x2 in zip(x, y):
      (x1 ,x2 ,str(x2), ha=’center’, va=’bottom’, fontsize=15, rotation=0)
    ……
    从图2可以看出python岗位招聘数量最多的是浦东新区75个,但平均薪资只有19K/月,说明浦东新区的互联网企业最多,岗位需求也最多,但源于招聘岗位的多样化,其平均薪资处于中等水平。徐汇区Python岗位数37个,排名第二,但平均薪资较低,说明徐汇区对python岗位需求量较多,但工资水平较低。
    平均薪资最高的是普陀区达到25K/月,但岗位数量只有5个,说明普陀区Python岗位需求量少,且对专业能力要求较高。长宁区,闵行区的岗位都有25-30个,平均薪资都达到20K/月以上,说明这两个区域的Python岗位数量的需求量较多,平均工资性价比也较高。其中宝山区,松江区和青浦区的python岗位数量较少,其平均工资也较低,不太利于python岗位的就业者。
    对不同经验,学历,公司规模等数据组的可视化处理,得到如下图3-图4:
   
    从图3中可看出,工作经验与工资待遇成正比关系,其中应届毕业生平均薪资6K/月最低,经验5-10年平均薪资26K/月最高。而应届毕业生薪资到经验1-3年薪资的提升幅度最大10K/月,其后随着工龄增加薪资涨幅会逐渐降低。其中经验不限岗位的平均薪资略低于经验1-3年岗位的平均薪资,但高于应届毕业生,说明经验不限的岗位应聘者的平均工作经验较少,导致其平均薪资水平有所下降。 
python爬虫开发    图4中可以看出,python工作岗位对技术有一定要求,所以本科学历占比最高83.46%,但高学历要求中硕士占比最少,只有0.75%。
    结束语:本文以Python语言为工具,以爬虫获取数据,数据分析处理,数据可视化的思路,分析处理上海地区关于Pyhton工作岗位的数据,利用图像展示这些数据不同维度和隐藏的关系图,可以让求职者对Python岗位未来的发展前景有直观的了解,并对求职工作的方向起到指导作用。
    参考文献:
    [1]林长谋,黄玮.基于Python的就业岗位数据获取与预处理[J].电脑知识与技术,2019,15(12):6-7.
    [2]李培.基于Python的网络爬虫与反爬虫技术研究[J].计算机与数字工程, 2019,47(6):1415-1420,1496.
    [3]杨众.基于Python语言的招聘信息可视化分析[J].计算机与网络,2020,1008-1739(2020):61.
    [4]郭丽蓉.基于Python的网络爬虫程序设计[J].电子技术与软件工程,2017(23):248-249.
    [5] 白雪丽.浅析基于Python 爬虫技术的特性及应用[J].山西科技,2018,33(2):53-55.
    [6]周洪斌.基于Python 的豆瓣图书评论数据获取与可视化分析[J].沙洲职业工学院学报,2018,21(4):1-6.