代码语言:javascript复制
查询许久,最终选择一个,之前一直py3.6不成功,换了2.7就好多了。如果有重复去下重即可。
这里面非常重要的基类对象的init()方法与超类方法,将在下面进行记录。
代码语言:javascript复制# -*- coding:utf-8 -*-
import json
import urllib2
import sys
import imp
import time
#显示当前系统编码
print(sys.getdefaultencoding())
#修改编码:py3.6无法解析百度地图API,如有人解决
imp.reload(sys)
sys.setdefaultencoding('utf-8')
#对百度api进行解析
class BaiDuPOI(object):
def __init__(self,itemy,loc):
self.itemy = itemy
self.loc = loc
#对页数进行循环提取
def urls(self):
api_key = baidu_api
urls = []
for pages in range(0,20):
url = 'http://api.map.baidu.com/place/v2/search?query=' 5A&景区 '&bounds=' self.loc '&page_size=20&page_num=' str(pages) '&output=json&ak=' api_key
urls.append(url)
return urls
#获取json数据
def baidu_search(self):
json_sel = ["name,lat,lng"]
for url in self.urls():
json_obj = urllib2.urlopen(url)
data = json.load(json_obj)
for item in data['results']:
jname = item["name"]
jlat = item["location"]["lat"]
jlng = item["location"]["lng"]
js_sel = jname ',' str(jlat) ',' str(jlng)
json_sel.append(js_sel)
return json_sel
#对数据进行关键词提取与写入
if __name__ == '__main__':
baidu_api = '133d5d0ef4fcc60f7ff63a76f5b538ac' #这里填入你的百度API
print "开始爬数据,请稍等..."
start_time = time.time()
locs_to_use = ['39.0,116.0,39.05,116.05']
for loc_to_use in locs_to_use:
par = BaiDuPOI(u'景区',loc_to_use) #请修改这里的参数
a = par.baidu_search()
doc = open('baidu_csv.csv','w')
for ax in a:
doc.write(ax)
doc.write('n')
doc.close
end_time = time.time()
print "数据爬取完毕,用时%.2f秒" % (end_time - start_time)
参考文献:http://www.workloadup.com/baidupoi.html