美文网首页大数据 爬虫Python AI SqlPython小哥哥
利用Python来定位你所在地方!精确到五十米内!

利用Python来定位你所在地方!精确到五十米内!

作者: 14e61d025165 | 来源:发表于2019-03-16 13:58 被阅读2次

    与昨天那样一步一步在jupyter notebook中编写测试代码不同,今天分享的代码,主体部分已经被写到了一个函数当中,这样如果需要抓取一个新的区域只需要调用函数即可。当然这些代码仍然可以在jupyter notebook中运行,待会儿你看到的代码运行测试结果就是在jupyter中进行展示的。

    运行环境:安装anaconda3即可,这是一个Python3的打包发行版。新手可查看之前的几篇文章:

    欢迎大家加入小编创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553

    #导入需要使用的Python库

    importrequests

    importjson

    importre

    importpandasaspd

    #--------------------------------------------- #

    #定义从百度地图获取区域边界点经纬度的函数   #

    #--------------------------------------------- #

    defgetRegion_baidu(keyword):

    #

    获取uid的网址格式uidUrl="http://map.baidu.com/su?wd={}&cid=289&type=0&pc_ver=2"#通过格式化函数得到网址,并进行抓取r_uid=requests.get(uidUrl.format(keyword),

               headers={'user-agent':'Mozilla/5.0'})

       #编码转换r_uid.encoding='utf-8'#使用正则表达式提取内容uids=re.findall('[a-zA-Z0-9]{24}', r_uid.text)

       #用来保存区域边缘的点的经纬度lat_lng=[]

       #循环每一个子区域foruidinuids:

          #把网页上的数据抓取到本地poinstUrl='http://map.baidu.com/?pcevaname=pc4.1&qt=ext&uid=

                        {}&ext_ver=new&l=12'

    r_point=requests.get(poinstUrl.format(uid),

                     headers={'user-agent':'Mozilla/5.0'})        r_point.encoding='ascii'#转换为python字典类型jd=json.loads(r_point.text)

           #使用正则表达式进行提取points=re.findall('[0-9]{8}.[0-9]+,[0-9]{7}.[0-9]+',

    jd['content']['geo'])                sub_lat_lng=[]

    #

    将中间都逗号去掉forstrinpoints:

               #将经纬度分开,并得到实际的经纬度temp=str.split(',')            temp[0]=round(float(temp[0])/100000,6)            temp[1]=round(float(temp[1])/100000,6)                        sub_lat_lng.append(temp)

    # 转换成dataframelat_lng.append(sub_lat_lng)        df=pd.DataFrame(lat_lng[0],columns=['longitude','latitude'])        df['name']=keyword

    # 返回结果returndf

    然后我们可以把这整段代码放在jupyter notebook中,运行,测试一下能否抓取到结果,这里我抓到了结果。

    你还可以使用这个函数去抓另外一个区域,比如华南理工大学,通过这种函数的形式,把中间过程封装起来,使用的时候进行调用即可,非常方便。

    注意:百度地图上并不能查到现实中存在的所有区域,因此有些区域是抓不到结果的哦~

    我将在下一篇文章中,对这段代码中使用的知识点进行更进一步详细的解释,因为今天有点不舒服,所以写的不多。

    相关文章

      网友评论

        本文标题:利用Python来定位你所在地方!精确到五十米内!

        本文链接:https://www.haomeiwen.com/subject/mqfsmqtx.html