这是一个从高德上爬辽宁省所有加油站的py,第一遍能跑说明代码应该是没问题的,但是为什么第二遍运行就会出现keyerror?尝试搜索了很久都得不到答案,所以想来问问
以下是完整代码:
__author__ = 'dell'
import urllib.request
import urllib.parse
import json
import os
cityList = [
["024","沈阳"],
["0412","鞍山"],
["0413","抚顺"],
["0414","本溪"],
["0415","丹东"],
["0416","锦州"],
["0417","营口"],
["0418","阜新"],
["0419","辽阳"],
["0410","铁岭"],
["0421","朝阳"],
["0427","盘锦"],
["0429","葫芦岛"],
["0411","大连"]
]
def url_open(url):
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8','ignore')
return html
#
def get_urlList():
key = "4afb262d298270075d438bba320c0694"
engGS = urllib.parse.quote("加油站")
urlList = []
for city in cityList:
#url = "http://restapi.amap.com/v3/place/text?key="+key+"&keywords="+engGS+"&types="+engGS+"&city="+city[0]+"&children=1&offset=20&page=1&extensions=all"
url = "http://restapi.amap.com/v3/place/text?key="+key+"&keywords="+engGS+"&types="+engGS+"&city="+city[0]+"&children=1&extensions=all"
urlList.append(url)
return urlList
def total_gasStation():
urlList = get_urlList()
i = 0
totalNum = 0
cityListNo = []
for url in urlList:
html = url_open(url)
target = json.loads(html)
gsNo = int(target['count'])
pageNo = divmod(gsNo,20)[0]+1 if divmod(gsNo,20)[1]>0 else divmod(gsNo,20)[0]
cityListNo.append([cityList[i][0],cityList[i][1],gsNo,pageNo])
totalNum = totalNum + gsNo
i = i + 1
# ['024', '沈阳', 528, 27]
return cityListNo
def get_GSByCity():
cityListNo = total_gasStation()
key = "4afb262d298270075d438bba320c0694"
engGS = urllib.parse.quote("加油站")
cityUrlList = []
for city in cityListNo:
urlList = []
for i in range(city[3]):
url = "http://restapi.amap.com/v3/place/text?key="+key+"&keywords="+engGS+"&types="+engGS+"&city="+city[0]+"&children=1&offset=20&page="+str(i+1)+"&extensions=all"
urlList.append(url)
cityUrlList.append(urlList)
return cityUrlList
def get_gsList():
cityUrlList = get_GSByCity()
#cityurl为沈阳市的27个url
allList = []
for cityUrl in cityUrlList:
cityPoisList = []
for url in cityUrl:
html = url_open(url)
target = json.loads(html)
pagePoisList = target['pois']
cityPoisList.append(pagePoisList)
cityPoisList = sum(cityPoisList,[])
allList.append(cityPoisList)
allList = sum(allList,[])
ffff = []
i= 0
for aList in allList:
try:
print(aList['id'])
dddd = aList['id']+'\t'+aList['name']+'\t'+aList['pname']+'\t'+aList['cityname']+'\t'+aList['adname']+'\t'+aList['address']+'\t'+aList['type']+'\t'+aList['location']+'\n'
i=i+1
except Exception as e:
continue
else:
ffff.append(dddd)
os.getcwd()
file_name = 'ln222.txt'
f = open(file_name,'w')
f.writelines(ffff)
f.close()
if __name__ == '__main__':
get_gsList()
cmd运行报错如图