项目中,需要获取所有的学校、院系、专业数据,目前项目中都是自己添加的,只有很小的一部分,而且很不全面。正好这次打算重构这块,就想着从其他大型平台上看如何获取数据
大型网站的对于这种大型数据的获取,一般都是通过 ajax 或 js文件 载入。(之前获取智联的行业、职位分类,就是这么找的!)
对于学校,想到了大学时的 '人人网',找了个人设置中的修改学校,添加学校,里面有选择学校!找页面请求,定位到了:
http://s.xnimg.cn/a85690/allunivlist.js
json解析过程各种费劲,各种问题:
json数据内容、编码可能有问题,导致解析不正确!里面可能有特殊字符!目前只匹配国内院校即可!进行处理:
$school_json = file_get_contents('http://s.xnimg.cn/a85690/allunivlist.js');
$school_json = strstr($school_json, '[');
// 这个是表示只匹配第一组,即 '中国'
$school_json = substr($school_json, 0, (strpos($school_json, '}]}') + 3));
$school_json .= ']';
$school_json = str_replace("\t", '', $school_json); // 安徽某个院校,录入时,有人不小心使用了 "\t"(我找了N久)
$school_json = preg_replace('/\'"/', '\'', $school_json);
$school_json = preg_replace('/:\'/', ':"', $school_json);
$school_json = preg_replace('/\'}/', '"}', $school_json);
$school_json = preg_replace('/(?P<key>\w+):/i', '"$1":', $school_json);
$school_array = json_decode($school_json, true);
注意:
对于字符、编码这边处理非常不合适,我只是死方法、笨方法处理的!
附同事找的一篇文章,正好也是处理的人人网的学校、院系:
https://www.cnblogs.com/handt/archive/2013/03/11/2954511.html
人人网获取高校、院系数据
最新推荐文章于 2024-04-18 10:40:16 发布
本文介绍了一种从大型平台抓取学校、院系及专业数据的方法,通过分析人人网的页面请求,定位到数据接口并解析JSON内容,最终获取国内院校数据。
299

被折叠的 条评论
为什么被折叠?



