爬虫案例:拉勾网工作职位爬取
Python与算法社区
共 6075字,需浏览 13分钟
· 2022-06-24
本人非IT专业,因为对python爬虫比较感兴趣,因此正在自学python爬虫,学习后就拿拉勾网练练手🤭,同时给zhenguo老师投稿,还能收获50元。
本次我们的目标是爬取拉勾网上成都的python岗位信息,包括职位名称、地区、薪水、任职要求、工作内容标签、公司名称、公司的类别及规模和福利待遇等信息,并将这些信息保存在一个CSV文件当中,废话不多说,开干!
首先我们进入拉勾网,输入Python关键信息,并选择成都,首先分析一下当前的url,url当中的pn=为页码,因此我们想爬取第几页的信息,就将pn的值设置为第几页。
'https://www.lagou.com/wn/jobs?pn=2&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'
'https://www.lagou.com/wn/jobs?pn=1&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'
想要爬取所有页面,只需要设置一个循环,每个循环中调用爬取工作信息的函数即可,代码如下:
if __name__ == '__main__':
# 爬取1-30页的内容
for page in range(1, 31):
url = f'https://www.lagou.com/wn/jobs?pn={page}&fromSearch=true&kd=python&city=%E6%88%90%E9%83%BD'
# 该函数的功能为爬取一页信息内容并写入到CSV文件内
get_info_job(url)
# 为了保证爬取速度过快导致IP被封,设置一下等待时间,爬取下一页的时候等待2秒
sleep(2)
接下来就是定义爬取每一页工作信息内容并写入到CSV文件内保存的函数,该函数的实现方式如下:
def get_info_job(job_url):
response = requests.get(url=job_url, headers=headers).text
selector = html.etree.HTML(response)
lis = selector.xpath('//*[@id="jobList"]/div[1]/div')
for li in lis:
name_area = li.xpath('.//div[1]/div[1]/div[1]/a/text()')
# 获取职位名称
title = name_area[0]
# 获取地区
area = name_area[1].replace('[', '').replace(']', '')
# 获取薪水
salary = li.xpath('.//div[1]/div[1]/div[2]/span/text()')[0]
# 获取经验和学历要求,有时候没有要求时,xpath匹配结果是一个空列表,程序会报错,因此这里需要捕获异常,一旦捕获异常,代表该工作无要求
try:
exp_degree = li.xpath('.//div[1]/div[1]/div[2]/text()')[0]
except IndexError:
exp_degree = '无要求'
# 获取工作标签,有时候没有工作标签,没有的话就用“/”代替
tags = li.xpath('.//div[2]/div[1]/span/text()')
if not tags:
tags = '/'
# 获取公司名称
company_name = li.xpath('.//div[1]/div[2]/div[1]/a/text()')[0]
# 获取公司类别和规模,有些公司没有这些信息,xpath匹配结果是一个空列表,程序会报错,因此捕获异常,一旦捕获到异常,代表没有公司类别和规模信心,用“/”代替
try:
company_Type_Size = li.xpath('.//div[1]/div[2]/div[2]/text()')[0]
except IndexError:
company_Type_Size = '/'
# 获取福利待遇,同样有些公司不公布福利待遇,xpath匹配结果也是一个空列表,程序会报错,因此需捕获异常,一旦捕获到异常,代表公司没有公布福利待遇等信息,用“/”替代
try:
benefits = li.xpath('.//div[2]/div[2]/text()')[-1].replace('“', '').replace('”', '')
except IndexError:
benefits = '/'
job_datas = {
'职位名称': title,
'地区': area,
'薪水': salary,
'经验和学历要求': exp_degree,
'工作标签': tags,
'公司名称': company_name,
'公司类别和规模': company_Type_Size,
'福利待遇': benefits
}
# print(job_datas)
writer.writerow([
title,
area,
salary,
exp_degree,
tags,
company_name,
company_Type_Size,
benefits
])
这里具体的爬取和保存的函数就定义完毕了,每次循环的时候直接调用该函数就行了,并且该程序能够适配所有地区和所有工作岗位的信息爬取,只需要更换具体的url就行了。该程序爬取成都岗位的信息效果图如下:
我们可以看到,我们爬取的信息有职位名称、地区、薪水、经验和学历要求、工作标签、公司名称、公司类别和规模、福利待遇等信息。
完整源码下载,请关注我的公众号,后台回复:拉勾
评论
如此“爬虫”?代码全省了
大家好,我是章北海Jina AI 开源了 RAG 数据处理中的关键组件:“网页数据爬取” ——Reader,目前 3300+ Star⭐️项目地址:https://github.com/jina-ai/readerJina AI Reader 特征:免费使用开源延迟大概 2S 内,复杂的内容可能需要
机器学习算法与Python实战
0
OpenUI:输入一段文字就能生成网!页!!
今天给大家介绍一个开源的 AI 网页生成工具:OpenUI!!!前言 在软件开发领域,用户界面(UI)的设计和构建确实是一个至关重要的环节。传统的 UI 开发需要设计师和开发人员紧密合作,通过反复的设计、修改和测试来达到理想的效果,这个过程往往耗时且成本较高。随着 AI 技术的发展,现在有越来越多的
前端技术江湖
0
小公司工作 6 年,后面怎么走?
大家好,我是二哥呀。我们每个人,都在不断和命运抗争着,哪怕有时候我们会不甘心、会堕落、会迷茫、会焦虑,但总有那么一刻,内心是充满渴望的,想要去努力、想要去改变、想要有一番作为(⛽️)。星球里就有这样一位球友,在小公司工作六年了,平凡而不平庸,他 18 年毕业,参加过 Java 后端的培训,还被骗过去
沉默王二
4
互联网晚报 | 大麦网已退款凤凰传奇演唱会“柱子票”;钟薛高再成被执行人;iPhone 16或取消实体音量键和电源键
大麦网回应凤凰传奇演唱会买到“柱子票”:已退票退款据报道,凤凰传奇2024巡回演唱会常州站演出结束的第二天,有网友称自己在大麦网买到“柱子票”,因为观看效果不佳,要求退款被拒。23日,记者从涉事网友处了解到,大麦方面给出了退款建议,但被其拒绝,“我希望平台退款加赔偿,并重视屡次出现的‘柱子票’问题。
产品刘
0
21.3K star!推荐一款可视化自动化测试/爬虫/数据采集神器!功能免费且强大!
【温馨提示】由于公众号更改了推送规则,不再按照时间顺序排列,如果不想错过测试开发技术精心准备的的干货文章,请将测试开发技术设为“星标☆”,看完文章在文尾处点亮“在看”!大家好,我是狂师!在大数据时代,信息的获取与分析变得尤为重要。对于开发者、数据分析师乃至非技术人员来说,能够高效地采集网络数据并进行
测试开发技术
4
盘点一个使用超级鹰识别验证码并自动登录的案例
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤江上几人在,天涯孤棹还。大家好,我是皮皮。一、前言前几天在Python钻石交流群【静惜】问了一个Python实现识别验证码并自动登录的问题,提问截图如下:验证码的截图如下所示:二、实现过程这里大家激烈的探讨,【
IT共享之家
0
Excel 黑科技:轻松优化工作薄性能
随着时间的推移,大型工作表可能会收集不必要的格式和元数据,从而降低性能。当数据被删除但基础格式未被删除时,可能会发生这种情况。Excel 现在可以自动检测性能问题并提出解决方法。您还可以随时手动运行检查性能命令来识别和解决性能问题。当我们打开工作簿时,Excel 会自动检查具有不必要格式的单元格。如
PowerBI战友联盟
6