Python爬虫爬取智联招聘(进阶版),一个Python程序员的阿里面试心得

lis = ul.find_all(‘strong’)

工作经验

years = lis[4].get_text()

最低学历

education = lis[5].get_text()

筛选任职要求

for terminalpage in soup.find_all(‘div’, class_=‘terminalpage-main clearfix’):

for box in terminalpage.find_all(‘div’, class_=‘tab-cont-box’):

cont = box.find_all(‘div’, class_=‘tab-inner-cont’)[0]

ps = cont.find_all(‘p’)

"立即申请"按钮也是个p标签,将其排除

for i in range(len(ps) - 1):

requirement += ps[i].get_text().replace(“\n”, “”).strip() # 去掉换行符和空格

筛选公司规模,该标签内有四个或五个
  • 标签,但是第一个就是公司规模

scale = soup.find(class_=‘terminal-ul clearfix terminal-company mt20’).find_all(‘li’)[0].strong.get_text()

return {‘years’: years, ‘education’: education, ‘requirement’: requirement, ‘scale’: scale}

本次我们将职位描述写入txt文件,其余信息写入csv文件。

csv文件采用逐行写入的方式这样也可以省点内存,修改write_csv_rows函数:

def write_csv_rows(path, headers, rows):

‘’’

写入行

‘’’

with open(path, ‘a’, encoding=‘gb18030’, newline=‘’) as f:

f_csv = csv.DictWriter(f, headers)

如果写入数据为字典,则写入一行,否则写入多行

if type(rows) == type({}):

f_csv.writerow(rows)

else:

f_csv.writerows(rows)

添加写txt文件函数:

def write_txt_file(path, txt):

‘’’

写入txt文本

‘’’

with open(path, ‘a’, encoding=‘gb18030’, newline=‘’) as f:

f.write(txt)

我们最重要对职位描述的内容进行词频统计,一些标点符号等会影响统计,使用正则表达式将其剔除:

对数据进行清洗,将标点符号等对词频统计造成影响的因素剔除

pattern = re.compile(r’[一-龥]+')

filterdata = re.findall(pattern, job_detail.get(‘requirement’))

write_txt_file(txt_filename, ‘’.join(filterdata))

至此,职位详细信息的获取及保存的工作已经完成,来看一下此时的main函数:

def main(city, keyword, region, pages):

‘’’

主函数

‘’’

csv_filename = ‘zl_’ + city + ‘_’ + keyword + ‘.csv’

txt_filename = ‘zl_’ + city + ‘_’ + keyword + ‘.txt’

headers = [‘job’, ‘years’, ‘education’, ‘salary’, ‘company’, ‘scale’, ‘job_url’]

write_csv_headers(csv_filename, headers)

for i in range(pages):

‘’’

获取该页中所有职位信息,写入csv文件

‘’’

job_dict = {}

html = get_one_page(city, keyword, region, i)

items = parse_one_page(html)

for item in items:

html = get_detail_page(item.get(‘job_url’))

job_detail = get_job_detail(html)

job_dict[‘job’] = item.get(‘job’)

job_dict[‘years’] = job_detail.get(‘years’)

job_dict[‘education’] = job_detail.get(‘education’)

job_dict[‘salary’] = item.get(‘salary’)

job_dict[‘company’] = item.get(‘company’)

job_dict[‘scale’] = job_detail.get(‘scale’)

job_dict[‘job_url’] = item.get(‘job_url’)

对数据进行清洗,将标点符号等对词频统计造成影响的因素剔除

pattern = re.compile(r’[一-龥]+')

filterdata = re.findall(pattern, job_detail.get(‘requirement’))

write_txt_file(txt_filename, ‘’.join(filterdata))

write_csv_rows(csv_filename, headers, job_dict)

4、数据分析


本节内容为此版本的重点。

4.1 工资统计

我们对各个阶段工资的占比进行统计,分析该行业的薪资分布水平。前面我们已经把数据保存到csv文件里了,接下来要读取salary列:

def read_csv_column(path, column):

‘’’

读取一列

‘’’

with open(path, ‘r’, encoding=‘gb18030’, newline=‘’) as f:

reader = csv.reader(f)

return [row[column] for row in reader]

main函数里添加

print(read_csv_column(csv_filename, 3))

#下面为打印结果

[‘salary’, ‘7000’, ‘5000’, ‘25000’, ‘12500’, ‘25000’, ‘20000’, ‘32500’, ‘20000’, ‘15000’, ‘9000’, ‘5000’, ‘5000’, ‘12500’, ‘24000’, ‘15000’, ‘18000’, ‘25000’, ‘20000’, ‘0’, ‘20000’, ‘12500’, ‘17500’, ‘17500’, ‘20000’, ‘11500’, ‘25000’, ‘12500’, ‘17500’, ‘25000’, ‘22500’, ‘22500’, ‘25000’, ‘17500’, ‘7000’, ‘25000’, ‘3000’, ‘22500’, ‘15000’, ‘25000’, ‘20000’, ‘22500’, ‘15000’, ‘15000’, ‘25000’, ‘17500’, ‘22500’, ‘10500’, ‘20000’, ‘17500’, ‘22500’, ‘17500’, ‘25000’, ‘20000’, ‘11500’, ‘11250’, ‘12500’, ‘14000’, ‘12500’, ‘17500’, ‘15000’]

从结果可以看出,除了第一项,其他的都为平均工资,但是此时的工资为字符串,为了方便统计,我们将其转换成整形:

salaries = []

sal = read_csv_column(csv_filename, 3)

撇除第一项,并转换成整形,生成新的列表

for i in range(len(sal) - 1):

工资为’0’的表示招聘上写的是’面议’,不做统计

if not sal[i] == ‘0’:

salaries.append(int(sal[i + 1]))

print(salaries)

下面为打印结果

[7000, 5000, 25000, 12500, 25000, 20000, 32500, 20000, 15000, 9000, 5000, 5000, 12500, 24000, 15000, 18000, 25000, 20000, 0, 20000, 12500, 20000, 11500, 17500, 25000, 12500, 17500, 25000, 25000, 22500, 22500, 17500, 17500, 7000, 25000, 3000, 22500, 15000, 25000, 20000, 22500, 15000, 22500, 10500, 20000, 15000, 17500, 17500, 25000, 17500, 22500, 25000, 12500, 20000, 11250, 11500, 14000, 12500, 15000, 17500]

我们用直方图进行展示:

plt.hist(salaries, bins=10 ,)

plt.show()

生成效果图如下:

在这里插入图片描述

从图中可以看出工资分布的情况,这样在你找工作时可以做一个参考。

4.2 职位描述词频统计

对职位描述词频统计的意义是可以了解该职位对技能的基本要求,如果正在找工作,可以估计一下自己的要求是否符合该职位;如果想要一年后换工作,那么也可以提前做好准备,迎接新的挑战。

词频统计用到了 jieba、numpy、pandas、scipy库。如果电脑上没有这两个库,执行安装指令:

  • pip install jieba

  • pip install pandas

  • pip install numpy

  • pip install scipy

4.2.1 读取txt文件

前面已经将职位描述保存到txt文件里了,现在我们将其读出:

def read_txt_file(path):

‘’’

读取txt文本

‘’’

with open(path, ‘r’, encoding=‘gb18030’, newline=‘’) as f:

return f.read()

简单测试一下:

import jieba

import pandas as pd

‘’’

python学习交流群:1136201545更多学习资料可以加群获取

‘’’

content = read_txt_file(txt_filename)

segment = jieba.lcut(content)

words_df=pd.DataFrame({‘segment’:segment})

print(words_df)

输出结果如下:

segment

0 岗位职责

1 参与

2 公司

3 软件产品

4 后台

5 研发

6 和

7 维护

8 工作

9 参与

10 建筑物

11 联网

12 数据分析

13 算法

14 的

15 设计

16 和

17 开发

18 可

19 独立

20 完成

21 业务

22 算法

23 模块

… …

从结果可以看出:“岗位职责”、“参与”、“公司”、软件产品“、”的“、”和“等单词并没有实际意义,所以我们要将他们从表中删除。

4.2.2 stop word

下面引入一个概念:stop word, 在网站里面存在大量的常用词比如:“在”、“里面”、“也”、“的”、“它”、“为”这些词都是停止词。这些词因为使用频率过高,几乎每个网页上都存在,所以搜索引擎开发人员都将这一类词语全部忽略掉。如果我们的网站上存在大量这样的词语,那么相当于浪费了很多资源。

在百度搜索stpowords.txt进行下载,放到py文件同级目录。接下来测试一下:

content = read_txt_file(txt_filename)

segment = jieba.lcut(content)

words_df=pd.DataFrame({‘segment’:segment})

stopwords=pd.read_csv(“stopwords.txt”,index_col=False,quoting=3,sep=" ",names=[‘stopword’],encoding=‘utf-8’)

words_df=words_df[~words_df.segment.isin(stopwords.stopword)]

print(words_df)

以下为输出结果

0 岗位职责

1 参与

2 公司

3 软件产品

4 后台

5 研发

7 维护

8 工作

9 参与

10 建筑物

11 联网

12 数据分析

13 算法

15 设计

17 开发

19 独立

21 业务

22 算法

23 模块

24 开发

28 产品
文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

g](https://img-blog.csdnimg.cn/a9d7c35e6919437a988883d84dcc5e58.png)

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-AuNinsF6-1710982121849)]

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值