#! /usr/bin/python3 # -*- coding: utf-8 -*- import json from lxml import html import requests MAPAPI = 'http://openapi.map.naver.com/api/geocode.php?key=2994b9957130f5a19b0aa0165bb9fd1e&encoding=utf-8&coord=LatLng&query=%s' def get_latlon(query): root = html.parse(MAPAPI % query) lon, lat = root.xpath('//point/x/text()')[0], root.xpath('//point/y/text()')[0] return (lat, lon) def prep(item): n, name = item[0].split(' ', 1) lat, lon = get_latlon(item[3]) return { 'num': n, 'name': name, 'lat': lat, 'lon': lon, 'description': item[1], 'phone': item[2], 'addr': item[3] } url = 'http://m.wikitree.co.kr/main/news_view.php?id=217101' query = '서울시 서대문구 창천동 72-36' r = requests.get(url) root = html.document_fromstring(r.text) string = '\n'.join(root.xpath('//div[@id="ct_size"]/div//text()')) items = [] for i in range(1, 21): tmp = string.split('%s.' % i, 1) string = tmp[1] items.append([j.strip() for j in tmp[0].split('\n') if j and j!='\xa0']) data = [prep(i[:4]) for i in items[1:]] with open('places.json', 'w') as f: json.dump(data, f) with open('places.csv', 'w') as f: f.write('name,prince,lat,lon\n') for d in data: f.write('%(name)s,0,%(lat)s,%(lon)s\n' % d)