大数据告诉你,中国哪里出美女
来源:互联网 发布:检测电脑温度软件 编辑:程序博客网 时间:2024/05/01 13:54
前言
“自古美女出苏杭”,“川渝盛产美女”,究竟哪里才是中国最盛产美女的地方,为此,本文采用网页自动化抓取的方法,调取了中国大型偶像乐团SNH48的成员介绍,找到成员出生地一览进行汇总统计!
概要
网页信息采集可以使用的工具众多,本次博主采用casperJS自动化采集的方式,采集了SNH48官网成员介绍页面。casperJS能够方便地实现网页截图,网页元素查找等方面的功能,特别值得一提的是其对于选择器的较好支持,能够基于选择器查找所需元素,这样就大大简化了提取关键信息的步骤,从而避免了以往数据采集通过正则表达式查找元素的麻烦。casperJS的简介及使用方法详见其官网:http://casperjs.org/
步骤
1、登录SNH48官网的成员介绍主页:http://www.snh48.com/member_list.php;
2、随意点击某一成员的信息主页,可以发现其URL格式形如:http://www.snh48.com/member_detail.php?sid=xxx
可以看到,sid后面的数字即为成员的编号;查看整个页面,可以发现其取值范围为1~150,但某些取值可能没有页面,即编号不连续,不过好在这个问题的存在不影响采集,稍后详细介绍。
3、查找成员的出生地,如下图所示红框所示
4、最关键一步,查找该出生地对应的选择器。
打开chrome,选择“检查”,再点击“元素选择器”并选中上面第3步的出生地元素,如下图所示: 可以看出,出生地放在了一个无序列表项li当中,该列表项的class名为12,且有多个同名的class,故不能采用li.12的形式定位。那么,我们向上寻找其父元素
看到其父元素为div,类名mem_w,为了验证类名为mem_w的div的唯一性,在chrome的console中输入:document.querySelectorAll(".mem_w"),如下图所示:
由此可见该元素具有唯一性,那么通过它再找到出生地对应的li即可找到元素,观察发现,显示出生地的li位于该div下的第22个元素,采用document.querySelectorAll(".mem_w li:nth-child(22)")验证,结果如下:
至此,我们就找到了网页采集的关键元素,从而可以编写采集代码了。
5、编写casperJS代码采集信息(拿走不谢):
var casper = require('casper').create();var fs=require('fs');casper.start();fs.write("snh48.html",'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">','a+')for (var i = 1; i <=180; i++) { (function (arg) { casper.then( function () { var url = "http://www.snh48.com/member_detail.php?sid=" + arg; casper.page = casper.newPage(); casper.open(url).then(function () { fs.write("snh48.html",arg,"a+"); if(casper.getHTML(".mem_w li:nth-child(22)")) { fs.write("snh48.html",casper.getHTML(".mem_w li:nth-child(22)")+"<br>",'a+'); } }); } ); })(i)}casper.run();
代码部分解读:
(1)引入fs模块用于将采集到的数据输出到文件,在写入数据前,为了避免出现乱码,需要给文件指定编码格式UTF-8;
(2)第6行起,引入闭包,否则for循环内采集的结果将永远是最后一个,即sid为180的网页。不熟悉闭包的同学,可以阅读相关书籍和文档。
6、其他
类似的,我们再次抓取SNH48姐妹团BEJ48(http://www.bej48.com/member.html)和GNZ48(http://www.gnz48.com/member/member_list.php)的数据,脚本仍然采用上述框架,只是URL和选择器需要重新调整,在此不再赘述。
结论
绘制柱状图如下:
可以看出,SNH48成员多来自上海及周边,此外来自四川、湖南、湖北也为数不少,与传统意义上大家认同的盛产美女的地方基本保持一致。当然,由于SNH48地处上海,来自上海的成员可能也有一定程度的地域优势,但基于网页信息的抓取和统计分析,就暂时不考虑此种因素。
- 大数据告诉你,中国哪里出美女
- 大数据告诉你:梅西究竟厉害在哪里?
- 大数据告诉你,中国有2亿单身狗
- 美女头像这么多,他们用大数据告诉你哪个是骗子
- 一个工程师告诉你为什么中国出豆腐渣工程
- 哪里可以买卖中国大数据
- 数据告诉你 :移动互联网下半场的机会在哪里
- 百年地震数据告诉你,哪里的房子不能买
- 阿里告诉你什么是大数据
- 什么叫大数据?世界地图告诉你!
- 大数据告诉你怎么做征信
- 国庆去哪人少,大数据来告诉你
- 你所在城市的心脏在哪儿?大数据告诉你!
- 生活数字化 小故事告诉你什么是大数据
- 如何追女神?微软大数据告诉你
- 大数据告诉你梅西完美得不可思议
- 学习、恋爱、交朋友 大数据告诉你大学真相
- 大数据告诉你:程序员如何涨薪水
- Qt学习一:基本程序Hello World!
- 关于android studio 出现Error:Execution failed for task ':app:buildInfoDebugLoader'.的解决办法
- sparkstreaming消费kafka中的数据
- 02、Android 开发环境搭建
- iOS 将字典 数组 转换成 NSdata 或者 NSString
- 大数据告诉你,中国哪里出美女
- Ajax之三 Ajax服务器端控件
- shell记录
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- 前端常见术语
- 测试之路——记一次解决问题的过程
- 详解五大排序算法
- 多么痛的领悟!!!
- javascript 中document的用法