Python爬虫爬取智联招聘(进阶版),2024年最新2024Python面试心得
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
为了得到更加详细的职位信息,我们要找到职位链接,在新的页面中寻找数据。上篇文章中我们没有解析职位链接,那再来找一下吧:

修改一下正则表达式:
正则表达式进行解析
pattern = re.compile(‘<td class=“zwmc”.?href="(.?)" target=“_blank”>(.?).?’ # 匹配职位详情地址和职位名称
‘.? target=“_blank”>(.?).*?’ # 匹配公司名称
‘(.*?)’, re.S) # 匹配月薪
匹配所有符合条件的内容
items = re.findall(pattern, html)
工资有两种形式xxxx-yyyy或者面议,此处取第一种形式的平均值作为分析标准,虽有偏差但是也差不多,这是求职中最重要的一项指标。
for item in items:
salary_avarage = 0
temp = item[3]
if temp != ‘面议’:
idx = temp.find(‘-’)
求平均工资
salary_avarage = (int(temp[0:idx]) + int(temp[idx+1:]))//2
3.1 网页解析
第一步已经将职位地址找到,在浏览器打开之后我们要找到如下几项数据:

在开发者工具中查找这几项数据,如下图所示:

HTML结构如下所示:
数据HTML结构
|------
==>|------
>>|------
>>==>|------
- 工作经验:3-5年
-
>>==>|------
- 最低学历:本科
-
>>|------
>>==>|------
>>>>|------
>>>>==>|------
工作职责:
>>>>==>|------
********
>>>>==>|------
********
# 工作职责详情==>|------
>>|------
>>==>|------
>>>>|------
- 公司规模:100-499人
-
3.2 代码实现
为了学习一下BeautifulSoup库的使用,我们不再使用正则表达式解析,而是BeautifulSoup库解析HTML标签来获得我们想要得到的内容。
解析库的安装:
pip install beautifulsoup4下面介绍一下本例中使用到的功能:
-
库的引入:
from bs4 import BeautifulSoup -
数据引入:
soup = BeautifulSoup(html, 'html.parser'),其中html是我们要解析的html源码,html.parser指定HTML的解析器为Python标准库。 -
查找标签:
find(name,attrs,recursive,text,**kwargs),find返回的匹配结果的第一个元素 -
查找所有标签:
find_all(name,attrs,recursive,text,**kwargs)可以根据标签名,属性,内容查找文档,返回找到的所有元素 -
获取内容:
get_text()就可以获取文本内容 -
获取子标签:
soup.p这种方式就可以获取到soup下的第一个p标签
‘’’
python学习交流群:1136201545更多学习资料可以加群获取
‘’’
def get_job_detail(html):
requirement = ‘’
使用BeautifulSoup进行数据筛选
soup = BeautifulSoup(html, ‘html.parser’)
找到
- 标签
for ul in soup.find_all(‘ul’, class_=‘terminal-ul clearfix’):
该标签共有8个子标签,分别为:
职位月薪|工作地点|发布日期|工作性质|工作经验|最低学历|招聘人数|职位类别
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.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 模块
… …
从结果可以看出:“岗位职责”、“参与”、“公司”、软件产品“、”的“、”和“等单词并没有实际意义,所以我们要将他们从表中删除。
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。

(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-2PS7YCWq-1713373483081)]一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)