环境:PyCharm+Chorme+MongoDB Window10
爬虫爬取数据的过程,也类似于普通用户打开网页的过程。所以当我们想要打开浏览器去获取好友空间的时候必定会要求进行登录,接着再是查看说说。那么我们先把登录步骤给解决了。
1.模拟登录QQ空间
因为想更直观的看到整个登录过程所以就没有用selenium+phantomjs,而是结合Chorme使用。除了slenium和Chorme之外还需要下载ChormeDriver进行使用,官网不提供win64版本的但是win32版本的也能正常在64位系统使用 我使用的是2.30版本的ChormeDriver和61的Chorme。
2.通过浏览器的开发者工具查看数据来源。
在打开说说页面之前打开开发者工具点击NetWork选择XHR你会看到如下的几个网址通过查看Response。
筛选XHR后显示的地址
获取数据所需的参数
通过多次请求发现不断改变g_tk值,但是这个值是通过加密算法得到的在网上查了下发现了这个加密算法。
3.将数据获取并储存到数据库中。
既然已经搞清楚数据是怎么来的那么就可以开始考虑将获取的数据保存到数据库里了,这次我们选择的是MongoDB,MongoDB的数据储存格式为BSON类似于JSON。在获取过程需要考虑两个问题,一是你是否有权限访问该空间,二是在能访问的情况下不能无止境的爬下去需要判断该空间说说是否爬取完毕。在爬取过程中将不能访问的QQCode存入list在最后跑完的时候输出。事已至此经过漫长的等待以及和服务器不断的交互所有的数据都存入了数据库中接下来就该对数据进行处理了!!
4.处理数据,大概爬下来11万条左右的数据
将获取的位置信息标记在地图上可以看到红点密集的地方大概也是旅游时大家比较想去的地方。
通过部分说说得到的发送设备信息