招聘数据分析+源码

第一次做大数据分析,有点小小的不顺利.不过还好,能出来东西,反正数据大家拿到以后,你们自己也可以做分析.

工资比较高的城市,根据百度招聘信息来分析的.

image

根据市场需求分析,开发人员的年限

image

市场人才需求分析

image

各大城市对开发经验的要求

image

数据爬取,源码

public class GetDate {
    
    public static void main(String[] args) throws JSONException {
        String srr[]={"北京","上海","广州","天津","武汉","沈阳","哈尔滨","西安","南京","成都","重庆 大城市;深圳","杭州","青岛","苏州","太原","郑州","济南","长春"," 合肥",
                "长沙","南昌","无锡","昆明","宁波","福州","石家庄 较大的城市;南宁","徐州","烟台","唐山","柳州","常州","鞍山","厦门","抚顺","吉林市","洛阳","大同","包头",
                "大庆","淄博","乌鲁木齐","佛山","呼和浩特","齐齐哈尔","泉州","西宁","兰州","贵阳","温州"};
        String brr[]={"java","python","C++",".NET","WEB前端","UI设计师","Android","IOS","PHP","C","C#","R","Swift","GO","大数据"};
        //java
        //String urlX="http://zhaopin.baidu.com/api/quanzhiasync?query=java&sort_type=1&detailmode=close&rn=20&pn=";
        //python
        //String urlX="http://zhaopin.baidu.com/api/quanzhiasync?query=python&sort_type=1&detailmode=close&rn=20&pn=";
        //c++
        String urlX="http://zhaopin.baidu.com/api/quanzhiasync?sort_type=1&detailmode=close&rn=20&pn=";
        for (int d = 0; d < brr.length; d++) {
            String query=brr[d];
            System.err.println(query);
            for (int c = 0; c < srr.length; c++) {
                //城市列表 city=%E6%9D%AD%E5%B7%9E&
                String city =srr[c];
                for (int j =0; j <=740; j+=20) {
                    try{
                    String url=urlX+j+"&city="+city+"&query="+query;
                    
                    String json=loadJSON(url);
                    json=jsonJX(json);
                    //JSONObject jsonObject =new JSONObject(json);
                    JSONArray array = new JSONArray(json);//将json字符串转成json数组
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject ob  = (JSONObject) array.get(i);//得到json对象
                        insert(ob.toString());
                    }
                    }catch (Exception e) {
                        System.err.println(".................错误................");
                    }
                }
            }
        }
    }

    //存数据库
    public static void insert(String json){
        
        try {
            //String jsons=json.substring(1, json.length()-1);
            JSONObject jsonObject =new JSONObject(json);
            String jobfirstclass=jsonObject.getString("jobfirstclass");
            String joblink=jsonObject.getString("joblink");
            String experience=jsonObject.getString("experience");
            String education=jsonObject.getString("education");
            String employertype=jsonObject.getString("employertype");
            String ori_city=jsonObject.getString("ori_city");
            String salary=jsonObject.getString("salary");
            String title=jsonObject.getString("title");
            
            
            String sql="insert into Baidu (jobfirstclass,joblink,experience,education,employertype,ori_city,salary,title) VALUES(?,?,?,?,?,?,?,?)";
            Object [] obj={jobfirstclass,joblink,experience,education,employertype,ori_city,salary,title};
            DataSource dataSource = DBUtils.getDataSource();
            QueryRunner qr = new QueryRunner(dataSource);
         
            qr.execute(sql, obj);
         } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //salary
    }
    
    //百度json解析
    public static String jsonJX(String json) throws JSONException{
        JSONObject jsonObject =new JSONObject(json);
        String date2=new JSONObject(jsonObject.getString("data")).getString("main");
        String Date3=new JSONObject(date2).getString("data");
        String BaiduDate=new JSONObject(Date3).getString("disp_data");
        System.out.println(BaiduDate);
        return BaiduDate;
    }
    //获取Json数据
    public static String loadJSON (String url) {
           StringBuilder json = new StringBuilder();
            try {
                URL oracle = new URL(url);
                URLConnection yc = oracle.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(
                                            yc.getInputStream()));
               
                String inputLine = null;
                while ( (inputLine = in.readLine()) != null) {
                    json.append(inputLine);
                }
                in.close();
            } catch (MalformedURLException e) {
            } catch (IOException e) {
            }
            return json.toString();
        }

jar包:


image.png

工具类

public class DBUtils {
    


    // 获得c3p0连接池对象
    private static  ComboPooledDataSource dataSource = new ComboPooledDataSource();  
    static {
        
        // 对池进行四大参数的配置  
        try {
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
        } catch (PropertyVetoException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/stone?useUnicode=true&characterEncoding=UTF-8");  
        dataSource.setUser("root");  
        dataSource.setPassword("admin");    
        // 池配置  
        //每次新增多少连接  
        dataSource.setAcquireIncrement(5);  
        //初始连接数多少  
        dataSource.setInitialPoolSize(20);  
        //最少连接数  
        dataSource.setMinPoolSize(2);  
        //最大连接数  
        dataSource.setMaxPoolSize(50);  
    }

    /**
     * 获得数据库连接对象
     *
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    /**
     * 获得c3p0连接池对象
     * @return
     */
    public static DataSource getDataSource() {
        return dataSource;
    }
}

然后给大家看效果:
有些数据爬不到,应该是百度的反爬机制.(所以建议大家把上面的主方法,拆开运行)


image.png

源码仅供学习,禁用于商业用途,转载,请留原链接和作者

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,479评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 一丝温暖的阳光 化作了迷人的色彩 在冬阳的余辉里 谱写成春的音符…… 冬日的春梦,灿烂地撒落在 我这向阳的心田……
    羽扇闲人阅读 179评论 0 4