写在前面:不详尽支出,各位看官可在留言区留言说明,我会尽快补充回复!
上传一个之前数据爬取过程中,编写的一个小程序,代码如下
# -*- coding: utf-8 -*-
import json
import sys
import requests
ty=sys.getfilesystemencoding() #这个可以获取文件系统的编码形式
import time
key='3d6da9b06#######' #使用的时候将自己在高德地图开发者上申请的Web服务key加入即可,这里的key是有问题的
#我们把变量都放在前面,后面就不涉及到变量了,如果要爬取别的POI,修改这几个变量就可以了,不用改代码了。
print (time.time()) #相较于python2.7,,python3print 需要加括号。
print ('开始')
urls=[] #声明一个数组列表
citys = [360600,360601,360602,360603,360681] #这里的表示为行政区代码,参考高德平台发布的城市编码表,文末附超链接
for city in citys:
for num in range(0,6): #这个范围根据数据量需求量来定,避免时间成本、计算成本等的浪费
page_num = str(num)
url = 'https://restapi.amap.com/v3/place/text?city='+str(city)+'&keywords='+keywords+'&key='+key+'&page_size=20&page_num='+page_num+'&output=json'
urls.append(url)
#urls.append(url)的意思是,将url添加入urls这个列表中。
txtFile = r'C:\Users\BAT\Desktop\result.txt'
jsonFile = r'C:\Users\BAT\Desktop\result.json'
f=open(txtFile,'a',encoding='utf-8')
f2=open(jsonFile,'a',encoding='utf-8')
print ('url列表读取完成')
for url in urls:
print(url)
time.sleep(1) #为了防止并发量报警,设置了一个10秒的休眠。
html=requests.get(url)#获取网页信息
data=html.json()#获取网页信息的json格式数据
jsonData = json.dumps(data)
f2.write(jsonData)
for item in data['pois']:
jname=item['name']
jadname = item['adname']
jloca=item['location']
# jadd=item['address']
j_str=jname+','+jadname+','+str(jloca)+'\n'
f.write(j_str)
f.close()
f2.close()
print ('完成')
用户可以在此高德开放平台 | 高德地图API注册为开发者用户,并在个人应用管理中申请自己的Web服务key!
文中所需的城市编码查询: