百度地图POI爬虫(Python3)

[Python工具]python多线程爬取百度地图瓦片 因为工作用到了(webbroswer+百度地图api离线js)做的离线地图,需要下载地图瓦片; 其实有很多地图瓦片下载器的.给出几个参考: 但是因为都比较大,不方便加入项目工具资料.所以想到了用python爬取瓦片; 先上代码: # coding: utf8 import urllib.request import os import io import math import ... 阅读详情

示例一

# -*- coding:utf-8 -*-
import csv
import json
import codecs
import os
import string
import sys
import time
import urllib.request
from urllib.parse import quote
from builtins import object, float, range, int, len, open, list, str


class BaiDuPOI(object):
    def __init__(self, itemy, loc):
        self.itemy = itemy
        self.loc = loc

    def urls(self):
        api_key = baidu_api
        urls = []
        for pages in range(0, 2):
            url = 'http://api.map.baidu.com/place/v2/search?query=' + self.itemy + '&bounds=' + self.loc + '&page_size=20&page_num=' + str(
                pages) + '&output=json&ak=' + api_key
            urls.append(url)
        return urls

    def baidu_search(self):
        '''json_sel = []
        for url in self.urls():
            s = quote(url, safe=string.printable)
            json_obj = urllib.request.urlopen(s).read().decode('utf-8')
            data = json.loads(json_obj)
            for item in data['results']:
                jname = item["name"]
                jlat = item["location"]["lat"]
                jlng = item["location"]["lng"]
                js_sel = jname + ',' + str(jlat) + ',' + str(jlng)
                json_sel.append(js_sel)
        return json_sel
        '''
        data = []
        for url in self.urls():
            s = quote(url, safe=string.printable)
            json_obj = urllib.request.urlopen(s).read().decode('utf-8')
            data.append(json.loads(json_obj))
            time.sleep(1)  # 休眠1秒
        return data


class LocaDiv(object):
    def __init__(self, loc_all):
        self.loc_all = loc_all

    def lat_all(self):
        lat_sw = float(self.loc_all.split(',')[0])
        lat_ne = float(self.loc_all.split(',')[2])
        lat_list = []
        for i in range(0, int((lat_ne - lat_sw + 0.0001) / 0.2)):  # 0.1为网格大小,可更改
            lat_list.append(lat_sw + 0.2 * i)  # 0.05
        lat_list.append(lat_ne)
        return lat_list

    def lng_all(self):
        lng_sw = float(self.loc_all.split(',')[1])
        lng_ne = float(self.loc_all.split(',')[3])
        lng_list = []
        for i in range(0, int((lng_ne - lng_sw + 0.0001) / 0.3)):  # 0.2为网格大小,可更改
            lng_list.append(lng_sw + 0.3 * i)  # 0.2为网格大小,可更改
        lng_list.append(lng_ne)
        return lng_list

    def ls_com(self):
        l1 = self.lat_all()
        l2 = self.lng_all()
        ab_list = []
        for i in range(0, len(l1)):
            a = str(l1[i])
            for i2 in range(0, len(l2)):
                b = str(l2[i2])
                ab = a + ',' + b
                ab_list.append(ab)
        return ab_list

    def ls_row(self):
        l1 = self.lat_all()
        l2 = self.lng_all()
        ls_com_v = self.ls_com()
        ls = []
        for n in range(0, len(l1) - 1):
            for i in range(0 + len(l1) * n, len(l2) + (len(l2)) * n - 1):
                a = ls_com_v[i]
                b = ls_com_v[i + len(l2) + 1]
                ab = a + ',' + b
                ls.append(ab)
        return ls


if __name__ == '__main__':
    doc = open('NTPOI.csv', 'a+')
    writer = csv.writer(doc)

    # ak
    baidu_api = "*********************"  # 这里填入你的百度API的ak
    print("开始爬取数据,请稍等...")
    start_time = time.time()
    loc = LocaDiv('31.69,120.54,32.65,121.95')
    locs_to_use = loc.ls_row()

    for loc_to_use in locs_to_use:
        par = BaiDuPOI('学校', loc_to_use)  # 请修改爬取的类别
        '''
        a = par.baidu_search()
        for ax in a:
            writer.writerow(a)
       '''

        listdata = par.baidu_search()
        for resultIndex in range(len(listdata)):  # 提取返回的结果
            resultlist=listdata[resultIndex]["results"]
            for pIndex in  range(len(resultlist)):
                 writer.writerow(list(resultlist[pIndex].values()))
        # time.sleep(1)  # 休眠1秒

    doc.close()
    end_time = time.time()
    print("学校爬取完毕,用时%.2f秒" % (end_time - start_time))

示例二

# 提取城市的POI点信息并将其保存至CSV
import csv
import string
import urllib
import json
from urllib.parse import quote

left_bottom = [120.89,31.83];  # 设置区域左下角坐标(百度坐标系)
right_top = [121.40,32.47]; # 设置区域右上角坐标(百度坐标系)
part_n = 8;  # 设置区域网格(2*2)
url0 = 'http://api.map.baidu.com/place/v2/search?';
x_item = (right_top[0]-left_bottom[0])/part_n;
y_item = (right_top[1]-left_bottom[1])/part_n;
query = '学校'; #搜索关键词设置
ak = 'OGTkT2pv********************mm9mek'; #百度地图api信令
n = 0; # 切片计数器

datacsv=open("baidu.csv", "a+", encoding="utf-8");
csvwriter = csv.writer(datacsv, dialect=("excel"))

for i in range(part_n):
    for j in range(part_n):
        left_bottom_part = [left_bottom[0]+i*x_item,left_bottom[1]+j*y_item]; # 切片的左下角坐标
        right_top_part = [right_top[0]+i*x_item,right_top[1]+j*y_item]; # 切片的右上角坐标
        for k in range(20):
            url = url0 + 'query=' + query + '&page_size=20&page_num=' + str(k) + '&scope=1&bounds=' + str(left_bottom_part[1]) + ',' + str(left_bottom_part[0]) + ','+str(right_top_part[1]) + ',' + str(right_top_part[0]) + '&output=json&ak=' + ak;
            s=quote(url, safe=string.printable)
            data = urllib.request.urlopen(s);
            hjson = json.loads(data.read().decode('utf-8'));
            if hjson['message'] == 'ok':
                results = hjson['results'];
                for m in range(len(results)): # 提取返回的结果
                    csvwriter.writerow(list(results[m].values()))
        n += 1;
        print('第',str(n),'个切片入库成功')

如图:

在这里插入图片描述
在这里插入图片描述

Python爬虫— 利用百度地图API批量获取城市POI点——POI实例 目的:利用Python爬虫—利用百度地图API批量获取城市的POI点 经过一定阶段的学习,知道怎么在百度开放控制平台里获取有效地AK值,并且在网页里成功获取了POI的数据,根据得到的数据可以看出都是以json或xml格式的返回形式。 (一)、创建百度开放应用(http://lbsyun.baidu.com/) ①首先要注册百度账号,验证登陆; ②打开控制台; ③创建... 阅读详情

相关推荐

Python之爬取百度地图兴趣点(POI)数据

关于爬虫系列,前三篇文章分别讲了三个简单案例,分别爬取了《你好,李焕英》电影豆瓣热门短评、58同城在售楼盘房源信息以及安居客网二手房小区详情页数据,这篇文章主要谈一谈如果用Python调查百度地图API接口,获取百度地图上的兴趣点(Point of interest)。 ...

qq_38230663的博客 2万+

爬虫——百度POI爬取(python3)

爬虫——百度POI爬取(python3) 学习过程: 爬虫: 本人对python的了解只在hello word水平,能写出这个爬虫主要感谢大佬@陈修一的基于python的百度迁徙1——迁入、迁出数据(附代码) url: 查看百度地图开放平台Web服务API服务文档 https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-pl...

She_Pherd的博客 2217

零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

好,现在进入高阶代码篇。 目的: 爬取昆明市中学的兴趣点POI。 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894,102.174112 右上角:26.548645,103.678942 URL模板: http://api.map.baidu.com/place/v2/search?query=中

吴道简的博客 2万+

Python3调用百度地图API接口获取结构化地址

在实际应用中,我们也许会有这样的需求,输入一个地名,就能够知道这个地方的准确地址。例如输入“清华大学”,我们就可以知道清华大学在北京的哪个区哪条道路。正好百度地图开放平台服务提供了这样的功能,我们可以利用百度地图的正/逆地理编码完成这一功能。 首先我们需要在百度地图开放平台上注册一个账号,然后进行个人认证,认证成功后就可以创建应用了。在控制台里创建应用,请求校验方式推荐使用ip白名单校验。下图为我...

Keras深度学习 2万+

python: 百度地图api爬虫

python网络爬虫的本质就是两步: 设置请求参数(url,headers,cookies,post或get验证等)访问目标站点的服务器; 解析服务器返回的文档,提取需要的信息。 而API的工作机制与爬虫的两步类似,但也有些许不同: 1、API一般只需要设置url即可,且请求方式一般为“get”方式 2、API服务器返回的通常是json或xml格式的数据,解析更简单 本篇我们就演示如何...

景霄之上的博客 3453

python调用百度地图API爬取西安市POI数据

任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库。 任务准备: 去百度地图开放平台申请密匙:http://lbsyun.baidu.com/ 步骤: 登录----->控制台----->注册登录成为开发者(已成为则跳过该步骤)----->创建应用------>填写应用名称----->应用类型选择浏览器端---->refer白名单输入“*”—>创建应用成功-----

time_money的博客 2452

qt excel 不能彻底退出_C++跨平台库QT学习 操作Excel

一、打开Excel文件首先在.pro文件加入:QT += axcontainer引入头文件: #include qDebug() << "尝试打开Excel" << path << endl; // 操作Excel的对象 QAxObject *excel = NULL; // workbook对象 QAxObject *workb...

weixin_39791386的博客 1021

百度地图获得POI及python实现

文章目录百度地图API整体流程python实现 本文将记录有关利用百度地图API去搜索一个城市内的POI的相关内容 百度地图API 百度地图API服务说明见其主页: http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding 地址解析:根据地址获取坐标 http://api.map.baidu.com/g...

赵亮的优快云博客 4682

Python爬虫--获取POI

爬虫是一种自动化获取互联网信息的程序。通过模拟人类浏览器行为,自动抓取网页上的数据,并进行处理和分析。他能够获取常规的网页HTML源代码,CSS、JavaScript文件,图片、视频等二进制文件,还有很多API接口类的信息像JSON类信息等。

2302_77320299的博客 5634

python爬取百度地图数据_百度地图POI数据爬取

利用百度地图开发者中心中的web API获取城市POI数据,后期会写出完整的多种参数详细数据获取教程。本次只写出了根据关键词和目的地的数据获取程序。将爬取下来的数据保存到本地csv文件。百度API返回的是标准的json格式数据。具体实现程序如下:import timeimport jsonimport sysimport requestsfrom tqdm import tqdm #进度条...

weixin_39949386的博客 2039

Python爬虫(二)--利用百度地图API批量获取城市所有的POI点

上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1、设置请求参数(url,headers,cookies,post或get验证等)访问目标站点的服务器; 2、解析服务器返回的文档,提取需要的信息。

打酱油的葫芦娃 5万+

零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(进阶篇)

好,现在进入进阶篇教程。 1.获取昆明市的bounds值 看到下面这个东西了吧?在文本框里写入昆明市,或者其他的行政区划地名,北京市、朝阳区、大河沟子村什么的。 这也是通过调用百度地图开放平台API实现的。 实现起来很简单,把下面这段代码复制到一个txt文件中,然后把txt文件的拓展名改成html,用浏览器打开,就可以查询行政区划的范围了。<!DOCTYPE html> <html>

吴道简的博客 2万+

Python编程实现百度地图医院POI数据爬取及GIS分析

网络爬虫是自动化获取网页内容的程序,通常用于搜索引擎索引、数据挖掘或监控网站更新。Python因其简洁的语法和强大的库支持,在爬虫领域广受欢迎。百度地图API是一系列可以被开发者调用以实现地图相关服务的接口。它提供了包括地图展示、POI检索、路径规划、地理编码等多种功能。通过这些API,开发者能够快速集成百度地图服务到自己的应用中。基本功能:百度地图API覆盖了从地图展示、坐标转换、路径规划、公交线路到室内地图等广泛功能。

weixin_35516624的博客 1638

python读取csv文件坐标地图描点_python3 通过百度地图API获取城市POI点并存于CSV格式...

原文信息:作者:WenWu_Both出处:http://blog.youkuaiyun.com/wenwu_both/article/版权:本文版权归作者和优快云博客共有转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任话不多说,由于兴趣,需要一些POI点的位置信息,于是找到了这篇博客,因为原作是基于python2.写的,出于python2.和python3.的些许...

weixin_39844525的博客 547

Python爬虫实例_利用百度地图API批量获取城市所有的POI点

下面小编就为大家分享一篇Python爬虫实例_利用百度地图API批量获取城市所有的POI点,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Win10+pycharm+conda 配置Siammask 过程记录(新手向)

我们跑动demo 需要配置两个相关的文件这两个文件需要用 git 进行下载,对于不熟悉git的小伙伴 我这里给出连接,大家可以直接下载即可,并将其配置在 experiments文件夹下然后大家再需要在设置参数参数这里给出了。

C1137577723的博客 550

python3 通过百度地图API获取城市POI点并存于CSV格式

原文信息: 作者:WenWu_Both  出处:http://blog.youkuaiyun.com/wenwu_both/article/  版权:本文版权归作者和优快云博客共有  转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任 话不多说,由于兴趣,需要一些POI点的位置信息,于是找到了这篇博客,因为原作是基于python2.写的,出于python2.和p...

David_Yang_7的博客 2429

毕设分享|基于16单片机的指纹识别电子密码锁设计

我们今天的工作生活中,很多的场合都需要身份的认证,而传统的基于标志的身份认证技术由于受到证件伪造以及密码破解等手段的威胁,逐渐表现得有些力不从心。怎样保护自己的重要文件资料,如何保证自己的隐私不被泄露?在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是"防君子不防小人"。在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。现在,科技的发展让我们有了新的选择——生物识别技术。将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。

Sen_091的博客 1019

百度地图POI数据获取

转载自:https://blog.youkuaiyun.com/baidu_26646129/article/details/80464447 本文主要介绍百度地图POI数据获取:从百度地图得到POI数据,以json格式保存; POI数据获取的原理部分还可以参照零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)。 POI数据获取 百度地图POI数据可以从百度地图提供的API——兴趣点...

豆芽菜 5万+

告别抓瞎!手把手教你用Keysight Infinium和M8040完成PCIe 5.0 TX/RX信号完整性测试

本文详细介绍了如何使用Keysight Infinium示波器和M8040误码仪完成PCIe 5.0 TX/RX信号完整性测试。从测试前的设备准备、软件配置到具体的TX信号测试步骤和RX容限测试实战,提供了全面的操作指南和常见问题解决方案,帮助工程师高效完成PCIe 5.0合规性测试。

weixin_30911451的博客 502

掌握SiOME:从零构建OPC UA信息模型的完整指南

本文是掌握SiOME工具的完整指南,详细介绍了如何利用这款免费且强大的OPC UA建模工具,从零开始构建信息模型。内容涵盖从获取软件、创建命名空间、定义对象类型与变量,到添加方法、生成XML文件,并最终将其集成到开源的open62541服务器中。通过可视化建模,开发者可以高效、准确地设计复杂模型,大幅提升工业物联网与自动化项目的开发效率。

tcp8optimizer的博客 514

Python 爬虫+百度地图API(http/https接口)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:用户6184845 ( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 ) 网络爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定规则自动抓取网上信息的程序或脚本。 有啥作用:通过该技术可快速高效的在互联网上获取自己想要的大数据,是大数

weixin_49345590的博客 2031

unity shader 后处理实现水墨风格渲染「Low Poly 」变「水墨画 」

水墨风格渲染 这次学校的比赛打算做一个中国古代背景的游戏,所以尝试做了水墨风格的渲染。 主要按以下四步来实现的效果: 根据色调和饱和度调整饱和度。 对图像进行模糊 水墨风格的物体边缘 物体内画笔笔触的模拟 接下来我分别就这四步依次展开说明: 调整饱和度 这里我使用Post-Processing Stack 的Color Grading 来调节饱和度,通过使用Grading Curv...

九级铁甲蛹的博客 1万+
上一篇: C#中JSON转换类
下一篇: MVC5使用百度地图API(JavaScript library库)【检索信息窗口类】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值