查询许久,最终选择一个,之前一直py3.6不成功,换了2.7就好多了。如果有重复去下重即可。 这里面非常重要的基类对象的init()方法与超类方法,将在下面进行记录。# -*- coding:utf-8 -*-import jsonimport urllib2import sysimport impimport 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
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦