2017-11-05 4 views
-1

현재 입력이 LinkedIn과 같은 회사 인 경우 코드가 완벽하게 작동하고 적절한 메시지가 제공됩니다. 이메일 입력이 전혀 작동하지 않습니다. 어떤 제안? 현재 코드는 다음과 같습니다.json 데이터를 처리 할 때의 문제

import urllib 
import json 

userInput = input('Do you want to find an email (E) or company (C)? ') 
userInput = userInput.upper() 

def getResponse(url): 
    cleanUrl = urllib.parse.quote_plus(url, safe=':/?&=') 
    try: 
     myRequest = urllib.request.Request(cleanUrl, headers={'User-Agent': 'Chrome'}) 
     myResponse = urllib.request.urlopen(myRequest).read().decode('utf-8') 
     myJSON = json.loads(myResponse) 
     return myJSON 
    except urllib.error.HTTPError as err: 
     print('We failed with error code - ', err.code, '(', err.reason, ')') 
     return 
    except: 
     print("Something else went terribly wrong!") 

def takeInput(): 
    url = 'https://haveibeenpwned.com/api/v2/' 
    if userInput == 'E': 
     email = input('What email do you want me to search for? ') 
     fixedurl = url + 'breachedaccount/' + email 
    elif userInput == 'C': 
     company = input('What company do you want me to search for? ') 
     fixedurl = url + 'breach/' + company 
    else: 
     print('Invalid entry. Please type E or C.') 

    myJSON = getResponse(fixedurl) 
    for data in myJSON: 
     name = myJSON.get("Name") 
     date = myJSON.get("BreachDate") 
     count = myJSON.get("PwnCount") 
     itemsLost = myJSON.get("DataClasses") 
     print("The", name,"breach occurred on", date,"and", count,"accounts were compromised. Iteams lost include:") 
     print(itemsLost) 
     break 

takeInput() 

답변

0

휴식 시간이 없습니다. 예를 들어 : 당신이 다른 방법을 수행하려는 경우 당신은 BTW이 문서를 확인할 수 있습니다

while True: 
    try: 
     x = int(input("Please enter a number: ")) 
     break 
    except ValueError: 
     print("Oops! That was no valid number. Try again...") 

. 목표에 따라 달라집니다.

http://ozgur.github.io/python-linkedin/

+0

고맙습니다! 휴식을 추가하는 것이 도움이되었습니다. 나는 아직도 이메일을 보낼 수 없다. 계속 "TypeError : 'NoneType'개체가 반복 가능하지 않습니다." –

+0

fixedurl = url + 'breachedaccount /'+ email ""을 사용해야합니다. – An0n