51job爬虫

news/2024/7/19 11:05:29 标签: 爬虫, python, 数据库

51job爬虫

  项目使用Python3.7爬取前程无忧对应关键字的招聘,保存到mongodb,爬取下来的数据,可分析出目前互联网的近况,可统计到每个招聘岗位有多少,每个岗位的薪资分布情况

  github地址:https://github.com/HowName/51job

  • 统计结果图,java还是老大哥
  • 爬取效果图
  • mongodb数据图
  • 使用到的库(第三方库建议使用pip进行安装)
  • python">BeautifulSoup4,pymongo,requests,re,time
    

      

  • 项目主代码
  • python">import re
    import time
    from bs4 import BeautifulSoup
    from pack.DbUtil import DbUtil
    from pack.RequestUtil import RequestUtil
    
    db = DbUtil()
    
    # 要查找的岗位
    keywords = ['php', 'java', 'python', 'node.js', 'go', 'hadoop', 'AI', '算法工程师', 'ios', 'android', '区块链', '大数据']
    
    for keyword in keywords:
    
        cur_page = 1
        url = 'https://search.51job.com/list/030200,000000,0000,00,9,99,@keyword,2,@cur_page.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=' \
            .replace('@keyword', str(keyword)).replace('@cur_page', str(cur_page))
        req = RequestUtil()
        html_str = req.get(url)
    
        # 从第一页中查找总页数
        soup = BeautifulSoup(html_str, 'html.parser')  # 推荐使用lxml
        the_total_page = soup.select('.p_in .td')[0].string.strip()
        the_total_page = int(re.sub(r"\D", "", the_total_page))  # 取数字
    
        print('keyword:', keyword, 'total page: ', the_total_page)
        print('start...')
    
        while cur_page <= the_total_page:
            """
            循环获取每一页
            """
    
            url = 'https://search.51job.com/list/030200,000000,0000,00,9,99,@keyword,2,@cur_page.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=' \
                .replace('@keyword', str(keyword)).replace('@cur_page', str(cur_page))
            req = RequestUtil()
            html_str = req.get(url)
    
            if html_str:
                soup = BeautifulSoup(html_str, 'html.parser')
    
                #  print(soup.prettify()) #格式化打印
    
                the_all = soup.select('.dw_table .el')
                del the_all[0]
    
                # 读取每一项招聘
                dict_data = []
                for item in the_all:
                    job_name = item.find(name='a').string.strip()
                    company_name = item.select('.t2')[0].find('a').string.strip()
                    area = item.select('.t3')[0].string.strip()
                    pay = item.select('.t4')[0].string
                    update_time = item.select('.t5')[0].string.strip()
    
                    dict_data.append(
                        {'job_name': job_name, 'company_name': company_name, 'area': area, 'pay': pay,
                         'update_time': update_time, 'keyword': keyword}
                    )
    
                # 插入mongodb
                db.insert(dict_data)
    
                print('keyword:', keyword, 'success page:', cur_page, 'insert count:', len(dict_data))
                time.sleep(0.5)
    
            else:
                print('keyword:', keyword, 'fail page:', cur_page)
    
            # 页数加1
            cur_page += 1
    
        else:
            print('keyword:', keyword, 'fetch end...')
    
    else:
        print('Mission complete!!!')
    

      

 

转载于:https://www.cnblogs.com/longer756567406/p/10833745.html


http://www.niftyadmin.cn/n/1359269.html

相关文章

HTML学生个人网站作业设计:电影网站设计——票务网站整套网页(15页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…

[转]关于时钟线/数据线/地址线上串联电阻及其作用

高速信号线中才考虑使用这样的电阻。在低频情况下&#xff0c;一般是直接连接。 这个电阻有两个作用&#xff0c;第一是阻抗匹配。因为信号源的阻抗很低&#xff0c;跟信号线之间阻抗不匹配&#xff08;关于阻抗匹配&#xff0c;请看详述&#xff09;&#xff0c;串上一个电阻后…

我眼中的 RPC

目录 什么是 RPC &#xff1f;什么情况下使用 RPC &#xff1f;RPC 框架原理RPC 调用过程RPC 优点RPC 缺点PHP RPC 有哪些&#xff1f;小结推荐阅读什么是 RPC &#xff1f; RPC 是一种框架或者说一种架构&#xff0c;主要目标就是让远程服务调用更简单、透明&#xff0c;调用远…

HTML学生个人网站作业设计:电影网站设计——动画漫展学习资料电影(6页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…

idea中git分支、合并与使用

1.分支的新建与合并使用场景介绍 让我们来看一个简单的分支新建与分支合并的例子&#xff0c;实际工作中你可能会用到类似的工作流。 你将经历如下步骤&#xff1a; 开发某个网站。 为实现某个新的需求、问题&#xff08;#53问题&#xff09;&#xff0c;创建一个分支&#xf…

HTML学生个人网站作业设计:电影网站设计——电影工作室(1页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…

HTML学生个人网站作业设计:电影网站设计——HTML电影网站(4页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…

HTML学生个人网站作业设计:电影网站设计——影视动漫资讯(9页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

一、作品介绍 1.作品简介 &#xff1a;html期末大作业,dw学生网页设计作业, A水平 ,喜欢的可以下载&#xff0c;文章页支持手机PC响应式布局。 2.作品编辑&#xff1a;作品下载后可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、…