第一遍跑成功了,第二遍跑的时候居然出现keyerror

牧谦 2017-10-29 05:14:37
这是一个从高德上爬辽宁省所有加油站的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运行报错如图
...全文
1386 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_369731801 2020-12-30
  • 打赏
  • 举报
回复
引用 3 楼 牧谦 的回复:
已近申请了新的key,问题解决啦,谢谢!
怎么解决的?
qq_369731801 2020-12-30
  • 打赏
  • 举报
回复
怎么解决的呢?
混沌鳄鱼 2017-10-30
  • 打赏
  • 举报
回复
你print(html) 看一下不就知道了 {"status":"0","info":"DAILY_QUERY_OVER_LIMIT","infocode":"10003"} 日查询超出限制
牧谦 2017-10-30
  • 打赏
  • 举报
回复
已近申请了新的key,问题解决啦,谢谢!
oyljerry 2017-10-30
  • 打赏
  • 举报
回复
被网站拦截请求了吧。被反扒处理了

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧