利用python爬取历代中国行政图,从先周到中华人民共和国,jpg格式边框带经纬度,可自行配准矢量化

古代地图,对于历史相关研究人员,是需要的工具,本想找到历代矢量的历史地图数据,但是发现很难有资源,因此只能找到已经公开制图了jpg数据,如果你有耐心,可以配准后矢量化,获取历代矢量数据,不够工作量浩大。爬取历代行政区划图的步骤如下:

一、首先,找到资源的地址,这里使用的网站是国学大师网。
利用谷歌浏览器,查找爬取地址:
在这里插入图片描述
图上标出的链接,即为图片在网站服务器存放的地址。只需要利用爬虫函数下载到本地就行了。

二、获取网页前端源代码,查找a标签

url = 'http://www.guoxuedashi.com/lsditu/'+str(i)+'/'
html = requests.get(url).text
soup=BeautifulSoup(html,'html.parser')
a=soup.select('a')

这里是将html代码全部copy下来,然后转换格式,找到html代码中a标签中内容,我们需要的网址就在a标签中

三、遍历a标签,找到我们需要的那个网址

for i in a:
   aObj = re.match(r"http://pic.guoxuedashi.com/lsditu/", i['href'])
   if aObj:
      url = i['href']

这里使用 re.match匹配网址链接,如果是http://pic.guoxuedashi.com/lsditu/开头的,则获取这个,即我们需要的那个

四、这里拼接文件夹地址以及文件名,将jpg写入该文件夹

name = url.split('/')
#print(name[4])
r = requests.get(i['href'])
os.makedirs('./image/'+name[4]+'/', exist_ok=True)
#DOWNLOAD_DELAY = 3
with open('./image/'+name[4]+'/'+name[5]+'.png', 'wb') as f:
   f.write(r.content)
   print(name[5]+'.png')

其中核心在于 f.write(r.content),即将jpg图片写入拼接好的文件夹路径

五、注意网站的反爬虫机制

socket.setdefaulttimeout(20)  # 设置socket层的超时时间为20秒
r.close()
time.sleep(2)

上面第一个为设置超时时间,第二个为关闭请求,每次爬取一次结束后关闭,第三个为设置睡眠时间,这样能降低服务器对于爬虫的应激反应。

爬取的效果如下:

在这里插入图片描述
共1.3个G,局部细节如下,以我喜欢的北宋地图为例:

在这里插入图片描述
在这里插入图片描述
所有数据我已经打包好,网盘地址:
链接:https://pan.baidu.com/s/1v8PgeKTfe5ExXRF8QN6Xpw
提取码:niq1

关注微信公众号:python趣味爱好者,后台回复:历代行政图,可以获取该完整源代码文件。
二维码如下:
在这里插入图片描述

1、 批量生成标准分幅行政区划,地打印所需的廓(或框)整饰内容:公里网,十字丝,经纬网以及标注,四角的经纬度标注,四周的文字表示和自动填写结合表的内容。一方面标准规范,另一方大大地提高了你的工作效率,使你在打印地中,从重复、繁杂的工作中摆脱出来。 2、 系统缺省按照地形标准设置,也提供各种参数定制:如地比例尺, 地左下角,下面的比例尺信息,右下角,左边的单位信息,右上角(机密等),上边的标题,内容,位置,字体的大小,颜色都可以自己定义,提供公里网,十字丝,经纬网三种方式供你选择,你可以设置公里网,十字丝,经纬网的间距,文字标注的大小位置。 3、 比例尺可以自己指定,根据比例尺,自动计算各文字注记得位置。 4、 输入一幅号,就可以生成对应廓整饰内容。提供标准幅号(可以是新幅也可以是旧幅号,支持地比例尺有1:100万、1:50万、1:25万、1:10万、1:5万、1:2.5万、1:1万和1:5000比例尺))生成单幅的打印梯形廓,内外廓严格平行,都是梯形,文字标注按照梯形的斜线标注;根据标准幅文件批量生成标准梯形廓;根据行政区划文件的形对象,批量生成矩形廓,你可以定义地与内廓的距离,可以采用经纬网标注整饰,比例尺也可以灵活自定义。 5、 标注智能化程度高,要求左对齐,一定左对齐,中间对齐自动中间对齐,右对齐自动右对齐,位置严格按照定义位置标注,字体大小,颜色样式一定定义生成,并且可以和字段、或则日期配套使用。 本软件是绿色软件,无需安装,操作方便,自动记忆上次界面设置,下次打开就自动调出上次设置,包括文字的内容,字体的大小,颜色,你的选择(如本次选经纬网,下次打开默认设置还是经纬网),让你真正一劳永逸。有其他特殊需要和问题,都可以发Email:gisoracle@126.com, 635211942@qq.com或QQ:276529800, 635211942联系,定会得到答复。 本工具有ArcGIS和Mapinfo版,本说明主要针对MapInfo版 注意:需要安装mapinfo6.0以上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值