# 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 openthings@163.com,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()