今天是5.12号。
早上吃早餐老师打电话来问论文情况怎么样了,自己支支吾吾说了最近只是在看相关的内容,然后然后后面就全是被教育了。毕业不容易啊,真心觉得,可想而知要是读博那就得要更长的时间。
其实这篇内容主要与之前多进程爬取58同城的内容相似,其中再明确几点:
**1.如何导入和导出数据到MongoDB中? **
首先,不管导入导出都要在终端或者cmd中先cd到bin目录下:
cd C:\MongoDB\Server\3.2\bin
然后导入和导出的方法分别如下:
导入:mongoimport --db study(数据库) --collection tongcheng(表) --drop --file c:\xx.json
导出:mongoexport -d study(数据库) -c tieba_apple(表) -o user/a.xls
这样导出的a.xls文件会在bin这个文件下的user文件夹里。
但是并没有想像的那么顺利,导出到excel中后中文全是乱码,可能是因为Mongdb中是默认是'UTF-8'编码,而office软件默认是'GB2312'编码,最后调试好长时间仍不行,只好直接将数据库里的文件全部直接write进文本,然后再用excel打开才解决。
2.如果一页的详细信息只有一个那么select()时就要是select()[0]再获取相应的信息。如果包含多个信息,则使用用zip()函数。
3.在爬取贴吧时直接select获取不到时间和楼层等,因为这些信息放在标签里的相应属性data-field里,所以可以使用get('data-field')。
同时由于data-field是一个json格式的数据,所以需要import json模块,然后将json数据转化为字典:例a=json.loads(...)
这样可以直接用a['xx']['xx']来获得数据,[]中为相应的key。
因为只是抓取了apple吧中比较热门的一个帖子,只花了不到一分钟得到2568条数据,数据清洗和整理花了很大时间,这才明白之前看文章都说数据清洗会占据主要的时间,最后分析结果描述如下:
(1)总共得到2568条数据,但最后的楼层是3021,占比85.04%,而剩下有15%的楼层都是百度进行推广的广告,不知道所有的百度贴吧里是不是都是这个比例。
(2)此外发帖的性别男女比例总体为1:1,说明并没有说男生或者女孩更喜欢玩贴吧。
(3)从上面可以看到,PC占了3/4的比例,即相比较其它产品,贴吧这款产品人们还是更倾向于在PC端去浏览或者发帖。此外由于是在apple吧抓取的数据,apple手机比例18.34%也比android要大,但这可能是取样带来的问题,并不能推断总体上玩贴吧的人是用iphone较多还是android设备较多。
(4)本来还想统计发帖时间的序列图,不过数据不好处理,只好放弃。