前不久投稿了一篇论文是以腾讯位置大数据为基础进行人口空间化研究的,但是还未见刊,见刊后会给大家分享下具体的研究方法。

首先打开腾讯位置大数据星云图链接:https://xingyun.map.qq.com/index.html,从这个链接我们可以获取所有使用腾讯位置服务的产品(微信、QQ、腾讯地图、京东和美团)的人再全球任何地方产生的定位次数,方便大家人口估测、商业分析和科学研究等。

对于腾讯位置大数据平台,有一些商业接口可以调用

看起来还是挺爽的,但是现阶段只接受商业合作客户来调用,我们个人是获取不到的。

那就没办法了吗?当然不是,实际上腾讯位置大数据把调用接口就直接写在了前端,不过需要你花点心思去发现。

正文开始:

打开之后浏览器调到开发者模式开始抓包得到我们需要的定位数据。

如上图,这就是我们抓到的数据包,里面locs那一行中2528为北纬25.28度,11352则为东经113.52度,1则是在这一秒内该地点的定位次数。这一段数据量还是比较大的,如果你打开response来查看数据,浏览器能直接卡死,所以不得不说腾讯这个网页的前端做的实在太烂了。

我们再看腾讯位置大数据定位次数的更新频率,基本上隔一秒钟更新一次

那我们就来抓一下这个每一次返回的数据,我们注意到getXingYunPoints这个链接每次更新出来都是四个链接,然后点击链接header可以查看到RequestPayload有两个参数。不断点击四个链接查看参数我们发现参数中count一直为4,而rank则分别为0、1、2、3 。

以上就是抓包分析的过程,分析完下面就简单了,通过爬虫可以抓取到如下数据:

# -*- coding: utf-8 -*-

"""

Created on Fri Jun 8 00:45:20 2018

@author: 武状元

"""

import requests

import json

import pandas as pd

import time

def get_TecentData(count=4,rank=0): #先默认为从rank从0开始

url='https://xingyun.map.qq.com/api/getXingyunPoints'

locs=''

paload={'count':count,'rank':rank}

response=requests.post(url,data=json.dumps(paload))

datas=response.text

dictdatas=json.loads(datas)#dumps是将dict转化成str格式,loads是将str转化成dict格式

time=dictdatas["time"] #有了dict格式就可以根据关键字提取数据了,先提取时间

print(time)

locs=dictdatas["locs"] #再提取locs(这个需要进一步分析提取出经纬度和定位次数)

locss=locs.split(",")

#newloc=[locss[i:i+3] for i in range(0,len(locss),3)]

temp=[] #搞一个容器

for i in range(int(len(locss)/3)):

lat = locss[0+3*i] #得到纬度

lon = locss[1+3*i] #得到经度

count = locss[2+3*i]

temp.append([time,int(lat)/100,int(lon)/100,count]) #容器追加四个字段的数据:时间,纬度,经度和定位次数

result=pd.DataFrame(temp) #用到神器pandas,真好用

result.dropna() #去掉脏数据,相当于数据过滤了

result.columns = ['time', 'lat', 'lon','count']

result.to_csv('TecentData.txt',mode='a',index = False) #model="a",a的意思就是append,可以把得到的数据一直往TecentData.txt中追加

if __name__ =='__main__':

while(1): #一直循环吧,相信我,不到一小时你电脑硬盘就要炸,大概速度是一分钟一百兆数据就可以爬下来

for i in range(4):

get_TecentData(4,i) #主要是循环count,来获取四个链接里的数据

好了,这样就可以得到我们需要的数据了,以上是得到全球数据的办法。通过上述方法我获取了全球10天(100G左右)的腾讯位置大数据,还有2019年春节期间全国20天(80G左右)的腾讯位置大数据,这些数据可以用来研究人口分布特征和人口流动趋势等课题。但是如此大的数据怎么处理呢?一个txt文件100G,处理方法下一篇文章有简单介绍。

得到全球数据之后再进行数据清洗(比较繁琐)得到南京的数据,后面再导进ArcMap中就可以了。

之后绘制渔网并自行建模,得到南京市1km*1km人口估算格网(详细过程以后会有专门文章讲解):

以上就是得到的数据,但是如果你真的就按照这个方法来很快你就会发现你电脑硬盘受不了了(原先我就是这么搞的,得到全球10天定位数据100多g),那怎样减少数据量呢?我发现了两个方法,一个从空间角度,一个从时间角度。

方法一:直接在抓数据的时候裁剪出 你需要的范围,比如南京的,纬度范围就是北纬31.15到北纬32.70,经度范围是东经118.23到东经119.30,于是乎一个if语句就解了。

if __name__ =='__main__':

while(1):

for i in range(4):

get_TecentData(4,i)

time.sleep(120)

这样就得到了下图(南京包含在里面),这里的数据没有像上图那么排列完整密集是因为这只是一次定位数据的一个count而已,数据量很小,只是做演示用的。

方法二:从时间角度,这个就更简单了,爬一段时间就让你的程序停一段时间,这样的又可以稀释数据了。

if __name__ =='__main__':

while(1):

for i in range(4):

get_TecentData(4,i)

time.sleep(120)

总结:

需要注意的是该平台只能爬到当前数据,历史数据是爬不到的,所以如果有论文研究需要的童鞋还是看准时间赶紧爬吧,因为不知道这个接口啥时候就会被封了。(以前的接口是https://xingyun.map.qq.com/api/getpointbytime,最近改了,以前是每个五分钟可以爬一次数据,现在变成了可以每隔几秒钟爬一次了)

2019.7.18更新:​​​​

当大家开始运行程序的时候也会或多或少遇到很多报错,这里我也总结了下常见报错的解决方法:python爬取腾讯位置大数据遇到的各种报错问题解决方案汇

python大数据平台_基于腾讯位置大数据平台的全球移动定位数据Python爬取与清洗...相关推荐

  1. python爬取网站大数据_基于腾讯位置大数据平台的全球移动定位数据获取(Python爬取)...

    对于腾讯位置大数据平台,有一些商业接口可以调用 看起来还是挺爽的,但是现阶段只接受商业合作客户来调用,我们个人是获取不到的. 那就没办法了吗?当然不是,实际上腾讯位置大数据把调用接口就直接写在了前端, ...

  2. 腾讯人口密度热力图_从腾讯位置大数据,看中国的超级城市

    世界那么大,谢谢你来看我!!关注我你就是个网络.电脑.手机小达人 地图作为现代人经常使用的工具.大数据的出现赋予了地图新的内涵,传统的地图不能满足日常的需求,热力图营运而生.谷歌腾讯阿里百度NASA滴 ...

  3. 腾讯人口密度热力图_从腾讯位置大数据看中国的超级城市,你所处位置是不是很亮?...

    欢迎点击关注,每天分享好看的文章! 地图作为现代人经常使用的工具.大数据的出现赋予了地图新的内涵,传统的地图不能满足日常的需求,热力图营运而生.谷歌腾讯阿里百度NASA滴滴高德都推出了相应的产品供大家 ...

  4. Java学生实训平台_基于jsp的学生实训平台-JavaEE实现学生实训平台 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学生实训平台, 该项目可用各类java课程设计大作业中, 学生实训平台的系统架构分为前后台两部分, 最终实现在线上 ...

  5. sqoop数据倾斜_北京卓越讯通大数据岗位面试题分享

    北京卓越讯通面试题 学长1 1)笔试 (1)JAVA支持的数据类型有哪些?什么是自动拆装箱? (2)AtomicInteger和Volatile等线程安全操作的关键字的理解个使用 (3)创建线程有几种 ...

  6. 【Python】基于Python获取腾讯位置大数据并进行数据清洗与可视化

    目录 1 引言 2 数据爬取 2.1 代码 2.2 结果 3 数据清洗 3.1 代码 3.2 结果 4 可视化展示 5 后记 1 引言 由于前面几篇关于百度迁徙获取数据的文章反响不错,有好多dalao ...

  7. 大数据平台架构浅析——以讯飞大数据平台Odeon为例

    文章目录 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 功能 数据采集 数据开发 数据分析 数据编程 补充 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 Odeon大数据平 ...

  8. python爬取地理数据_python爬取所有人位置信息——腾讯位置大数据

    腾讯位置大数据 网站 https://heat.qq.com/ 网站功能介绍 腾讯位置大数据会将提供所有用户使用腾讯位置的数据信息,但没有用户信息(只有位置信息).从这个网站我们可以获取所有使用腾讯位 ...

  9. Python爬取所有人位置信息——腾讯位置大数据!

    腾讯位置大数据 网站 https://heat.qq.com/ 网站功能介绍     腾讯位置大数据会将提供所有用户使用腾讯位置的数据信息,但没有用户信息(只有位置信息).从这个网站我们可以获取所有使 ...

最新文章

  1. PHP smarty缓存
  2. 【转载】一致性哈希算法(consistent hashing)
  3. CentOs简单分区方案
  4. 转 sqlserver 中NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCKX
  5. leetcode 5 查找最长的回文子串
  6. 使用PXE+DHCP+Apache+Kickstart批量安装CentOS5.4 x86_64
  7. Win7环境下,用VHD安装Win8,实现双系统!
  8. NetSuite ERP软件系统特点介绍!
  9. 最大公约数(超级好的板子)
  10. php使用websocket示例详解
  11. TED如何和压力做朋友(第四天完)
  12. WebView 截取长图
  13. 抖音互关源码 E4A源码含数据库后台程序搭建可用
  14. 五年级春期计算机教案,五年级下册信息技术教案
  15. 以后 博文 要做 中文对照,利于国际化,利于自己熟悉英语。
  16. 【大疆2021校招】【硬件B卷】笔试题
  17. 阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
  18. 选择短信平台请注意以下几点:
  19. Python编程基础(1)
  20. 面试!四川我要去哪儿网!

热门文章

  1. AJAX(三)--实例无刷新验证用户名是否存在
  2. HTML 动态爱心代码
  3. 【高光谱】成像基础知识
  4. 西门子EM235模块特性
  5. Ubuntu 20.04.2.0 LTS 下中英文输入法切换键默认为Shift键
  6. html5图片剪切板,原生js实现基于base64数据复制图片到剪切板,可以粘贴出图片,模拟浏览器复制功能。...
  7. 观察分析:看P2P新媒体如何盈利(转)
  8. mx播放器有没有投屏功能_手机投屏电视怎么设置呢?图文讲解手机投屏设置步骤...
  9. 正则表达式中反斜杠的意义
  10. 计算机一级模拟7试题,全国计算机等级考试一级模拟试题_7