Skip to content

使用scrapy采集中国指定行政区域内的所有兴趣点数据,如学校、便利店、甜品店等

License

Notifications You must be signed in to change notification settings

zhengyi73/poi_spider

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

中国行政区域POIS(兴趣点)采集工具

===========================================

image image PyPI - Python Version

功能概述

原理

获取中国指定行政区域内所有POIS(兴趣点)的方法

功能

  1. 获取中国境内指定行政区域内(最小可精确到街道)的指定关键词的所有兴趣点 例如可以获取一个城市内所有的便利店、商场、超市、咖啡店等兴趣点信息
  2. 组合批量获取中国境内多个行政区域内多个关键词的所有兴趣点信息
  3. 将所有采集到兴趣点数据存储到指定的mysql数据库中

获取结果示例

beijing_food_pois_examples

beijing_food_pois_examples_markers


准备工作

注意:如果使用virtualenv 环境,请参考此博客https://blog.csdn.net/qingche456/article/details/54587898

  • 3 使用pip install requirements.txt安装依赖库

注意:前提是必须先安装Twisted库,不然安装时会报错

lxml==4.2.5
numpy==1.15.4
pandas==0.23.4
PyMySQL==0.9.2
pypinyin==0.33.2
requests==2.20.0
Scrapy==1.5.1
Shapely==1.6.4.post2
SQLAlchemy==1.2.12
yagmail==0.11.214

设置

设置文件位置: BaiduMapPoiSpider\BaiduMapWebApiSpier\settings.py

1 设置高德地图开发平台api_key

默认已经设置(但有次数限制2000/天),这个key主要用来调用行政区划边界api,2000/天其实是足够了的。 每个行政区域只调用一次。除非你一下子要获取2000个行政区域的兴趣点数据。

高德地图开发平台:

今天(2020年11月2日)收到高德地图的短信通知,我的这个账号被封了,以后就不提供这个api_key了,各位自己申请一个吧。

run

申请链接: https://lbs.amap.com/

GaoDeMap_API_KEY = '182ad5d7061ed1e421091c22089c3677'

2 设置百度地图开发平台ak

申请地址:百度地图开放平台

ak_list = ['iMplFNfYyAf4e7EleegtObtcOZdliriG']

注意:这里是以个列表,你可以放置多个ak,程序会随机调用,调用前会检测ak是否有效,若无效自动使用列表中的下一个ak,直至使用完毕

3 设置需要获取的区域 列表,可以填写多个省、市、区县,也可以填写省、市、区县的代码,具体可参考高德地图开放平台:行政区划查询接口

region_name_list = ["成都市", "德阳市", '成都市武侯区']

4 设置需要获取的兴趣点关键词,同样是列表,可填写多个

query_word_list = ['超市', '咖啡馆']

5 设置mysql 存储信息

	# 设置mysql 信息
	MYSQL_HOST = 'localhost'  # mysql ip
	MYSQL_USER = 'root'  # mysql用户名
	MYSQL_PASSWORD = 'test123456'  # mysql用户名密码
	MYSQL_DBNAME = 'test'  # mysql 中数据库名,必须提前创建好
	MYSQL_TableName = ''  # 将要写入的数据库中的表名,若不存在会自动创建,若为空,则自动以"指定的区域名_bd_map_pois"命名

6 配置ak消耗完毕时的邮件预警通知选项,这里以163邮箱为例,实际可以设置为qq邮箱、hotmail等

def send_email_163(subject, body, file):
    # 配置163发送邮件的主体账户选项
    yag = yagmail.SMTP(user='[email protected]', password='', host='smtp.163.com', port='465')
    body = body
    # 配置接收邮件的邮箱
    yag.send(to=['[email protected]'], subject=subject, contents=[body, r'%s' % file])

运行

直接运行根目录下的run.py即可:python run.py

run

联系我

如果在使用过程中遇到无法解决的问题,你可以通过关注我的个人公众号找到我。

另外,也可以通过提交issue的方式提交问题。

rewnwen_wechat

License

Apache 2.0 License.

About

使用scrapy采集中国指定行政区域内的所有兴趣点数据,如学校、便利店、甜品店等

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%