Giter VIP home page Giter VIP logo

poi's Introduction

这是一个爬取互联网开放的POI数据以及POI边界坐标代码集,包括高德和百度地图,可以爬取指定经纬度范围或者指定城市/省份的POI数据以及POI边界坐标(目前仅限百度)。

相关网站

代码目录介绍

baidu

百度地图POI数据爬取(WGS84坐标系)

  • app.py 程序入口文件
  • data 存放爬取的POI数据目录
  • boundary 百度POI边界坐标爬取目录
    • POI边界爬取结果存放目录

gaode

高德地图POI数据爬取

  • poi-city 划分行政区划来爬取指定城市范围内的POI数据
  • poi-pology 划分矩形网格来爬取指定城市的POI数据
  • poi-province 爬取指定省份内的POI数据
  • 高德地图POI分类编码表.xlsx
  • 高德地图城市编码表.xlsx

公共约定

  • app.py均为程序入口文件,修改配置以及执行都只需要关注该文件即可
  • transCoordinateSystem.py 为坐标转换代码,支持高德、百度、WGS84三种坐标系互转
  • POI分类可以用编码,也可以用对应的中文关键字

运行步骤

运行环境安装
  • 开发语言:python 3+ 推荐安装anaconda,集成了许多常用的第三方库
  • 开发工具:pycharm,其他的开发工具也行,看自己爱好
  • 一些可能需要安装的第三方库:
    • pandas
    • urllib
    • xpinyin
    • requests

具体可以先运行看缺少哪些库,然后使用pip install进行安装。

修改配置

在各个目录下的app.py中修改爬取参数配置,需要修改的地方均以TODO 标识,各个参数在代码前的注释均有介绍,最主要是需要设置需要爬取的POI类型、爬取的范围(城市/省/经纬度范围)、对应的AK密钥。 其中AK密钥可在百度开放平台( http://lbsyun.baidu.com/)或者高德地图开放平台( https://lbs.amap.com/)上申请。

启动

执行命令python app.py 即可开始爬取数据,不过由于范围大小、以及POI数量多少不一样,爬取花费的时间也不一样,范围越大,POI数量越多,花费的时间越长。比如爬取省的花费时间比爬一个城市花费的要长,爬取餐厅比爬图书馆花费的时间长。

常见问题以及解决措施:

  • 启动后报错:"no module named xxxxx",这是因为你的Python环境里面没有相应的第三方模块,可以使用命令"pip install XXX"安装相应的模块,安装成功后重启即可,特别需要注意的是在gaode/poi-province中的代码需要安装shapefile模块,其安装命令名为pip install pyshp,如果仍然不懂,可以把报错信息粘贴到百度搜索。
  • 运行后控制台报错,可以查看打印的数据(高德或百度POI爬取返回的数据),例如:{"status":"0","info":"INVALID_USER_KEY","infocode":"10001"},重点查看info的内容,此处INVALID_USER_KEY0表示该密钥无效,需要去高德开放平台检查账号是否被封禁,以及申请的密钥是否是web服务类型(这个很重要,如果是其他类型,则没法使用该功能)。
附录

有什么优化建议或者发现问题欢迎向我提问,POI,宜出行都可以,qq:917961898

poi's People

Contributors

cswxin avatar liujiao111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

poi's Issues

数据重复爬取

你好,我在爬取学校的数据的时候,为什么每个学校都会重复爬取十几次呢

高德网格划分爬取出错....

File "D:\ana\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "F:/xiongan/POI/gaode/app.py", line 314

^

SyntaxError: invalid syntax

为什么没有保存下CSV文件?

我把shp.py的都注释掉了,只想要excel文件,但是最终显示出“正在写入CSV文件中
,写入成功” 但在任何文件夹中都没有产生这个文件,是怎么回事呢?

baidu的api返回信息“Permission Denied”

在百度申请的AK,申请的AK步骤中没有认证开发者上传身份证,而是绑定手机邮箱后直接创建一个应用,然后拿到了AK。
之后填入到代码中运行,返resp.text的信息为:
{
"status":9,
"message":"Permission Denied",
"result_type":null,
"results":[]
}
请问这个是因为什么原因?

爬取单个城市数据中的app.py报错

# 根据城市名称和分类关键字获取poi数据 def getpois(cityname, keywords): i = 1 poilist = [] while True: # 使用while循环不断分页获取数据 result = getpoi_page(cityname, keywords, i) print(result) result = json.loads(result) # 将字符串转换为json print(result) if result['count'] == '0': break hand(poilist, result) i = i + 1 return poilist

字符串转换为json后没有count,并报错KeyError 'count'

百度POI边界爬取失败,http及坐标转换报错

我在使用baidu文件夹下boundary中的代码时常常出现http报错及输出“成功返回边界”后coords却为空的情况
网络请求出错: HTTPSConnectionPool(host='map.baidu.com', port=443): Max retries exceeded with url: /?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=ext&uid=9ad99e1798079eb72fe67b64&c=340&ext_ver=new&tn=B_NORMAL_MAP&nn=0&auth=fw9wVDQUyKS7%3DQ5eWeb5A21KZOG0NadNuxHNBxBBLBHtxjhNwzWWvy1uVt1GgvPUDZYOYIZuEt2gz4yYxGccZcuVtPWv3GuxNt%3DkVJ0IUvhgMZSguxzBEHLNRTVtlEeLZNz1%40Db17dDFC8zv7u%40ZPuxtfvSulnDjnCENTHEHH%40NXBvzXX3M%40J2mmiJ4Y&ie=utf-8&l=19&b=(12679382.095,2565580.38;12679884.095,2565907.38)&t=1573133634785 (Caused by ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')))
成功返回边界: 5e8b80ffe6d37aefd618b755,
请问有人知道是怎么回事吗?是不是接口需要更新?
微信图片_20240807174118

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.