Redian新闻
>
爬虫案例:拉勾网工作职位爬取

爬虫案例:拉勾网工作职位爬取

科技

本人非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就行了。该程序爬取成都岗位的信息效果图如下:

我们可以看到,我们爬取的信息有职位名称、地区、薪水、经验和学历要求、工作标签、公司名称、公司类别和规模、福利待遇等信息。

完整源码下载,请关注我的公众号,后台回复:

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
PBL精选案例:《向日葵》和数学皮特:拉黑一堆明星,永不相见!“暗黑笔记本”记录一切职位空缺严重,加国政府这拉风工作开始招人!高中学历就行精选DS岗位 | Amazon、VMware、Autodesk等公司最新职位发布!外交史上的成功案例和失败案例史无前例:这周日,纽约亚裔万人上街!爬虫必备Beautiful Soup包使用详解猴痘罕见爆发,全球超100例:只在非洲传播的病毒,怎么跑出来的?【案例报告】碳中和数智化实践案例报告-制造业能效管理丨甲子光年智库一例 “ 不明原因儿童肝炎 ” 病例:从入院到换肝,只有13天高工资、高职位的L-1申请人,也同样会遭到移民局的质疑?(附成功案例合集)北美求职指北-E周报:Netflix财报大跌,净付费用户十多年来首度流失;五年官司终败诉:爬取领英数据“完全合法”(4月第4周)澳洲小混混们令居民头痛不已,当局出狠招:拉他们去没Wifi的偏僻乡下养牛!4K美女壁纸爬取【案例分享】小公司能否同时申请两个相似H-1B职位?最不愿意俄乌停战的, 不但有老米, 其实厉害国也不愿意精选Data岗位 | Meta、Rakuten Americas等公司最新职位发布!快乐的周六加国年轻人找工的最好时代来了,90万个职位薪水支票+津贴成功案例 | 艺术家7个工作日获批EB-1A杰出人才绿卡澳洲恐连续3年遭强暴雨,致命洪水明年或卷土重来!专家:拉尼娜现象恐成“新常态”!赴美工作移民捷径选择:跨国公司高管EB-1C绿卡申请成功案例分享爬虫必备requests的扩展包总结当裁员来敲门:跟拉勾许单单聊聊为什么俄乌战争今日届满两个月。短评:俄罗斯闪电侵乌愿未遂,乌克兰浴血卫国志如钢!要真实要感人要省钱还要不翻车,这8个案例做到了|中国案例爬虫玩得好,牢饭吃到饱?这3条底线千万不能碰!明代宋克草书《公宴诗》古雅隽秀Bash 脚本实例:获取符号链接的目标位置累计感染超7000例:被骂的三亚,太冤了…精选SDE岗位 | Tableau、VMware、Amazon等公司最新职位发布!Z世代更爱把生活当作全职工作,把工作当作副业,新一代真的会改变未来的工作潮流吗?JS逆向案例:破解登录密码《人间四月天》 林徽因诗, 雅歌作曲/编曲,老地雷,中国狼演唱成功案例 | 教育科技行业CEO 5个工作日获批杰出人才绿卡
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。