欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python爬取所有人位置信息——腾讯位置大数据

程序员文章站 2022-04-22 11:39:43
python爬取所有人位置信息——腾讯位置大数据腾讯位置大数据网站网站功能介绍数据分析POST请求请求解析python代码补充腾讯位置大数据网站https://heat.qq.com/网站功能介绍    腾讯位置大数据会将提供所有用户使用腾讯位置的数据信息,但没有用户信息(只有位置信息)。从这个网站我们可以获取所有使用腾讯位置服务的产品(微信、QQ、腾讯地图、京东和美团)的人再全球任何地方产生的定位次数,方便大家人口估测、商业分析和科学研究等。数据分析POST请求    打开开发者工具,找到...

python爬取所有人位置信息——腾讯位置大数据

腾讯位置大数据

网站

https://heat.qq.com/

网站功能介绍

    腾讯位置大数据会将提供所有用户使用腾讯位置的数据信息,但没有用户信息(只有位置信息)。从这个网站我们可以获取所有使用腾讯位置服务的产品(微信、QQ、腾讯地图、京东和美团)的人再全球任何地方产生的定位次数,方便大家人口估测、商业分析和科学研究等。

数据分析

POST请求

    打开开发者工具,找到POST请求。这里需要注意的是,网站会每五分钟POST一次getxingyunPost请求,所以需要等五分钟才能看到这个post请求。
python爬取所有人位置信息——腾讯位置大数据

请求解析

    等到post请求出现时,我们点开详细信息,每一次getxingyunPost请求,都是四个。请求信息种,我们需要关注的是locs这个内容,它是由大量的数据组成中间由英文“,”隔开;
    每连续的三个数据为一组数据,这一组数据包含经度、纬度、人数,按照地理标准规范,经纬度小数点后面保持两位也就是说,表现形式为xxx.xx的格式,但是如下所示:

3220,11895,2,3075,11535,2,......

解析为:
纬度32.20,经度118.95,人数为2
纬度30.75,经度115.35,人数为2

python爬取所有人位置信息——腾讯位置大数据

python代码

"""
@author: 菜C++鸡Java  Jiangzl
@Description: 用来爬取腾讯位置大数据信息,再次声明,腾讯位置大数据从没人说是准确数据,也没说是完整数据,发paper的话建议三思
"""
import requests
import json
import pandas as pd
import time


def get_TecentData(count=4, rank=0, increNum=0):  # 先默认为从rank从0开始(tecent一次post会post四次)
    url = 'https://xingyun.map.qq.com/api/getXingyunPoints'
    content = ''
    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格式
    locs = dictdatas["locs"]  # 再提取content(这个需要进一步分析提取出经纬度和定位次数)
    locss = locs.split(",")
    temp = []  # 搞一个临时容器
    for i in range(int(len(locss) / 3)):
        lat = locss[0 + 3 * i]  # 得到纬度
        lon = locss[1 + 3 * i]  # 得到经度
        count = locss[2 + 3 * i]
        #获得陕西的数据---获取每个地方的数据,改这里就行
        #举个栗子--请求的元数据是整数,北纬10到20度之间
        #就是1000<int(lat)<2000
        if(3142<int(lat)<3935 and 10529<int(lon)<11115):
            temp.append([int(lat) / 100, int(lon) / 100, count])  # 在容器中存放数据:纬度,经度和定位次数
    #数据整理
    result = pd.DataFrame(temp)
    result.dropna()
    result.columns = ['lat', 'lon', 'count']
    result.to_csv('TecentData'+str(increNum)+'.txt', mode='a', index=False)  # model="a",a的意思就是append,可以把得到的数据一直往TecentData.txt中追加

if __name__ == '__main__':
    #如果你想每隔多长时间生成一个文件,就把下面的注释释放掉,就去掉那个#井号,0改成k
    #sleep(number)   number:间隔时间,每隔一分钟获取一次数据就是  sleep(60)

    #while (1):
    #for k in range(1000000):
        for i in range(4):
            get_TecentData(4, i, 0)
        #time.sleep(60)

补充

    在解析数据的时候注意运行的时间以及数据的筛选,如果不加筛选,每次请求为10M流量,按一秒一次,一小时一般的磁盘可能就满了。

本文地址:https://blog.csdn.net/qq_40921561/article/details/109640429