用Python爬取了拉勾网的招聘信息+详细教程+趣味学习+快速爬虫入门+学习交流+大神+爬虫入门

简介: 关于一直埋头学习,不知当前趋势,这是学习一门技术过程中最大的忌讳。刚好利用python爬虫,抓取一下拉勾网关于python职位的一些基本要求,不仅能知道岗位的基本技能要求,还能锻炼一下代码能力,学以致用,一举两得。

关于

一直埋头学习,不知当前趋势,这是学习一门技术过程中最大的忌讳。刚好利用python爬虫,抓取一下拉勾网关于python职位的一些基本要求,不仅能知道岗位的基本技能要求,还能锻炼一下代码能力,学以致用,一举两得。

准备

工具 :python 2.7,PyCharm

类库:urllib2、BeautifulSoup、time、re、sys、json、collections、xlsxwriter

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

分析及代码实现

进入拉勾网进行分析,要想获取每个岗位的关键词,首先要知道每个岗位详情页面的url,通过对比我们发现,https://www.lagou.com/jobs/4289433.html中,只有4289433这一串数字是不同的,那么就可以知道我们只要获取到每个岗位的这一串数字,我们就可以爬取每个岗位详情页面。

通过F12查看,我们可以看到xhr请求中https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false的响应消息里的参数positionId的值为详情页面url的那串数字,如下图

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

,那么接下来我们就爬取这个请求来获取所有的positionId。

首先我们通过分析可以看到这是个post请求且form的参数为first、pn、kd,通过不同岗位列表页面的请求,我们可以看到first的取值逻辑是pn为1的时候,first为true,当pn不为1的时候,first的取值为false(其中pn为岗位列表的页数),还有kd为一个固定值(这里是python)

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

def get_positionId(pn): positionId_list = [] url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', 'Referer': 'https://www.lagou.com/jobs/list_Python?px=default&city=%E5%8C%97%E4%BA%AC' } if pn == 1: first = 'true' else: first = 'false' data = {'first': first, 'pn': pn, 'kd':kd #这里取变量值,可以获取不同岗位的关键词 } page = get_page(url, headers, data) if page == None: return None max_pageNum = get_pageSize(page) result = page['content']['positionResult']['result'] for num in range(0, max_pageNum): positionId = result[num]['positionId'] positionId_list.append(positionId) return positionId_list #该函数返回一个列表页的所有岗位的positionId

在获取到每个岗位的positionId后,我们就可以根据获取到的positionId进行拼接得到每个岗位详情页面的url,然后爬取这些url,来获取每个岗位的关键词(这里还有一个比较坑人的地方就是通过爬取来的网页内容和通过定位得到的内容竟然是不一样的,害的我纠结了好久),分析该网页如下图:

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

具体的实现如下:

#获取每个岗位的职位要求def get_content(positionId): url = 'https://www.lagou.com/jobs/%s.html' %(positionId) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', 'Referer': 'https://www.lagou.com/jobs/list_Python?px=default&city=%E5%8C%97%E4%BA%AC' } page = get_page(url,headers,data=0) soup = Bs(page, 'html.parser') content = soup.find('dd', class_='job_bt').get_text() return content

接下来就是对获取到的岗位描述进行过滤处理,来获取英文关键词,实现如下:

#对获取的关键词列表进行过滤去重,获取top50的关键词#处理岗位描述,获取英文关键词def get_keyword(content): pattern = re.compile('[a-zA-Z]+') keyword = pattern.findall(content) return keyword

然后,在通过collections中的Counter模块获取到这些英文关键词中的top50,实现如下:

#对获取的关键词列表进行过滤去重,获取top50的关键词def parser_keyword(keyword_list): for i in range(len(keyword_list)): keyword_list[i] = keyword_list[i].lower() keyword_top = Counter(keyword_list).most_common(50) return keyword_top

最后把top50的关键词保存到Excel中,并且生成分析图,实现如下:

#数据保存到Excel中,并且生成报表。def save_excel(keyword_top): row = 1 col = 0 workbook = xlsxwriter.Workbook('lagou.xlsx') worksheet = workbook.add_worksheet('lagou') worksheet.write(0, col, u'关键词') worksheet.write(0, col+1, u'频次') for name, num in keyword_top: worksheet.write(row, col, name) worksheet.write(row, col+1, num) row += 1 chart = workbook.add_chart({'type': 'area'}) chart.add_series({ 'categories': 'lagou!$A$2:$A$51', 'values': 'lagou!$B$2:$B$51' }) chart.set_title({'name': u'关键词排名'}) chart.set_x_axis({'name': u'关键词'}) chart.set_y_axis({'name': u'频次(/次)'}) worksheet.insert_chart('C2', chart, {'x_offset':15, 'y_offset':10}) workbook.close()

结果

具体生成的分析图如下:

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

image.png

如果对您有点帮助的话,麻烦您给点个赞,谢谢。

最后附上全部的代码:

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

用Python爬取了拉勾网的招聘信息,我发现了一个惊人的秘密

大家如果有问题都可以评论区留言,另外如果需要一个学习交流的平台可以加小编的群:719+139+688,群里面有很多学习资料还有大神的直播分享,希望对大家有所帮助,另外在这个上面我回复可能稍微慢一点,但是你们有问题在评论区留言我都会帮你们解决的。

目录
相关文章
|
API Python
VIN码查询API的实战指南:获取二手车信息以Python为例
随着机动车保有量上升,中国二手车市场迎来发展机遇。本文介绍如何通过VIN码查询API获取车辆详细信息,提升交易透明度与安全性。
595 1
|
前端开发 数据安全/隐私保护 Python
虚拟物流单号生成器, 虚拟快递单号假物流信息, 虚拟快递单号在线生成【python框架】
这个虚拟物流单号生成系统包含以下功能:支持多种主流快递公司的单号生成
|
数据安全/隐私保护 数据格式 Python
快递单号模拟生成器, 虚拟物流信息在线生成,虚假快递单号生成器【python】
支持多种主流快递公司生成符合各快递公司规则的快递单号自动生成收发件人信息
|
JSON 前端开发 API
快递单号生成器在线, 快递单号模拟生成器, 虚拟物流信息在线生成【python】
项目包含三个主要模块:快递单号生成器核心逻辑、Flask Web应用程序和前端HTML页面
|
JSON API 数据安全/隐私保护
车辆五项信息查询 API 的实践指南:通过Python调用赋能车辆信息标准化
本API通过车牌号快速获取车辆五项核心信息,包括品牌、登记日期、车架号等,助力二手车评估、维修、保险等场景实现数字化转型。数据源自权威公安交管库,日更同步,毫秒级响应,满足高并发需求,符合隐私保护规范,是推动汽车后市场智能化的重要工具。
934 0
|
12月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1754 102
|
12月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
552 104
|
12月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
453 103
|
12月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
464 82
|
11月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
577 3

推荐镜像

更多