网页数据抓取软件(一个不用Python爬虫批量下载全国GeoJSON矢量边界数据的方法)
优采云 发布时间: 2022-03-27 17:09网页数据抓取软件(一个不用Python爬虫批量下载全国GeoJSON矢量边界数据的方法)
在之前的文章《使用Python获取国家GeoJSON数据并预览并转换为shp格式文件》中介绍了使用Python下载DataV.GeoAtlas地图边界数据的方法,但是留言中很多朋友告诉我使用Python爬虫抓取数据会坐牢,吓到宝宝了,所以今天宝宝给大家分享一个不使用Python爬虫批量下载全国GeoJSON矢量边界数据的方法。毕竟,一次一点不是体力活。
环境要求
推荐使用 MacOS Terminal(Mac 自带),或者使用 Linux,Terminal 也自带。确实不行,Windows可以,但是需要在Windows上安装Windows Terminal或者其他第三方终端工具。
PS:本文所有操作均在MacOS下完成。请自行在其他平台上测试。如果您有任何问题,请反馈。
抓住想法
用命令行来做这个不是很方便,像Python一样,让它先点击哪个按钮再点击哪个按钮(主要是我的水平太差了)。我们先观察一下数据结构,如下图:
国家数据:
省级数据:
地级市数据:
此时,不难发现以下规律:
国家数据:
下载整张图片只有一个数据,直接下载即可。这是:
省级数据:
下载所有省份数据,只需要拥有所有省份的adcode并构建下载地址即可,例如:
甘肃:
内蒙古:
以此类推,地级市的数据与省的数据相似,只是将adcode替换为每个地级市的数据。那么如何下载所有的广告代码呢?我们再观察一下,回到原来的网站,有一个Excel下载按钮,我们先下载。
打开看看:
点击此处的省、市、区,可下载各级别的属性数据。点击下载:
数据格式如下:
至此,我们的爬取思路就完成了,如下:
抓取所有省级adcode 抓取所有地级市的adcode 构建url 批量下载准备工具 Terminalwget 或迅雷等支持批量下载的工具 数据下载
下面是实战过程,先获取所有省的adcode,下载省标签下的json数据,地址:
要提取所有省级广告代码,请在终端中输入以下命令:
cat 100000_province.json | grep -Eo \"adcode\"\:\"\(\[0-9\]{6}\)\", > provinces.txt
sed 's/\"adcode\"\:\"/https:\/\/geo\.datav\.aliyun\.com\/areas\/bound\//g' provinces.txt > tmp.txt
sed 's/\"\,/\_full\.json/g' tmp.txt > provinces.txt && rm tmp.txt
wget -i provinces.txt
执行后,下载所有省级 GeoJSON 数据。
地级市数据下载方式与省级市相同。只需要更改上述命令的源文件,这里不再赘述。
总结
其实这个数据抓取属于一个很简单的层次,但又离不开它,不管是命令行还是Python、Node,不管是MacOS还是Linux、Windows,都要学会善于思考,善于使用各种工具解决各种问题。