批量下载osm的分区域的osm文件

# coding: utf-8
#!/usr/bin/python

# #### http://www.openstreetmap.org 的分区后的osm数据批量下载工具(需要python的requests和BeautifulSoup包)。
# 从 http://download.geofabrik.de/ 提取网页中下载连接,然后写入osm-from-geofabrik.txt。  
# 然后可以批量下载:** wget -c -i osm-from-geofabrik.txt ** ,或者载入其它的下载工具。  
# 
# 或者使用crontab定时下载,编写一个geofabrik-dl.txt(内容如下,指定晚上11:00,每周一到周五执行)。  
# 然后执行:crontab crontab.txt。
# ```
# 0 23 * * 1-5 wget -c -N -i osm-from-geofabrik.txt
# 0 6 * * 1-5 killall wget
# ```
# 原始数据下载,参考:** http://planet.openstreetmap.org/planet/ **,  最新版本:http://planet.openstreetmap.org/planet/2016/planet-160411.osm.bz2
# 
# ##### by [email protected],http://my.oschina.net/u/2306127/blog

from bs4 import BeautifulSoup as bs
import requests as req
from pprint import *

#获取网页内容,经常访问不到,可以将地址拷贝到浏览器试试。
url = "http://download.geofabrik.de/"
try:
    r = req.get(url)
    print(r)
except Exception as ex:
    print("Error:",ex)

#获取网页中的链接列表
bsr = bs(r.text,"html.parser")
alist = bsr.find_all('a')
#pprint(alist)

#另一种方式获取网页中链接的列表。
#bst = [x.extract() for x in bsr.find_all('a')]
#pprint(bst)

#查找列表
flist = open("osm-from-geofabrik.txt","w")

for a in bst:
    #help(a)
    a1 = a.attrs['href']
    if a1.find('.bz2') > 0:
        flist.writelines(a1+"\r\n")
        print(a1)
        
flist.close()


你可能感兴趣的:(批量下载,osm,geofabrik)