我想列出我的脚本在python中搜索特定字符串,但我也想在前两个字母中添加国家代码,但是当我尝试时它会说无效KeyError:'country_code',但是api说ocation.country_code我怎么能实现呢?
#!/usr/bin/python
import shodan
SHODAN_API_KEY="xxxxxxxxxxxxxxxxxxxx"
api = shodan.Shodan(SHODAN_API_KEY)
try:
# Search Shodan
results = api.search('ProFTPd-1.3.3c')
# Show the results
for result in results['matches']:
print '%s' % result['ip_str']
print '%s' % result['country_code']
except shodan.APIError, e:
print 'Error: %s' % e
答案 0 :(得分:1)
我认为这是您在Python中使用的方法 https://github.com/achillean/shodan-python/blob/master/shodan/client.py#L324 并触发:
return self._request('/shodan/host/search', args)
Shodan API文档: https://developer.shodan.io/api 查看 / shodan / host / search API
我刚刚看到答案在你的问题中,但你吃了一个来自地点的信(ocation)。
试试这个:
print '%s' % result['location']['country_code']
所以你正在寻找的领域,但它在另一本字典中。
我建议下次好好阅读API文档,正如Nofal Daud所说,如果你在dict上有KeyError意味着字段不在那里,那么Python错误是自我解释的。下次听Python会揭示真相。