Python запрашивает разбор JSON: JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (символ 0) - PullRequest
0 голосов
/ 03 мая 2018

У меня возникла эта проблема с генератором профилей, который я делаю ..

Это мой код:

    print('Reading profile data')
    with open('profile_data.json') as file:
        data = json.load(file)
    print('Profile data loaded')
    task = int(raw_input('Task Number: '))
    delay = int(raw_input('Delay (second): '))
    x = 0
    while x < task:
        x = x + 1
        randomn = random.randint(10000, 100000000)
        email2, domain = data['email'].split('@')
        email1 = email2+'+'+str(randomn)+'@'+domain
        rando1 = random.randint(15, 40)
        r = requests.post('https://forms.nvidia.eu/FP_20161221_GFN_Early_Access/process?isJs=1&returnAs=json', data={'First_Name': data['fname'], 'Last_Name': data['lname'], 'email': email1, 'Platform': 'PC', 'Age': rando1, 'region': 'en_us'})
        e = requests.get('https://forms.nvidia.eu/FP_20161221_GFN_Early_Access/process?isJs=1&returnAs=json')
        print(e)
        succ = str(r.json()['status'])
        print(succ)
        if succ == 'SUCCESS':
            print('Success! '+str(x)+' Emails signed up')
            time.sleep(delay)
        elif succ == 'VERIFY':
            print('Task '+str(x)+' Failed due to captcha. Try again later, or use proxies')
            quit()
        else:
            print('Task number '+str(x)+' failed. Trying again in '+str(delay)+' seconds.')
            time.sleep(delay)

Это полный журнал, включая ошибку:

Reading profile data
Profile data loaded
Task Number: 30
Delay (second): 0
<Response [501]>
SUCCESS
Success! 1 Emails signed up
<Response [501]>
SUCCESS
Success! 2 Emails signed up
<Response [501]>
SUCCESS
Success! 3 Emails signed up
<Response [501]>
SUCCESS
Success! 4 Emails signed up
<Response [501]>
SUCCESS
Success! 5 Emails signed up
<Response [501]>
SUCCESS
Success! 6 Emails signed up
<Response [501]>
SUCCESS
Success! 7 Emails signed up
<Response [501]>
SUCCESS
Success! 8 Emails signed up
<Response [503]>
SUCCESS
Success! 9 Emails signed up
<Response [503]>
SUCCESS
Success! 10 Emails signed up
<Response [501]>
Traceback (most recent call last):
  File "main.py", line 47, in <module>
    succ = str(r.json()['status'])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 894, in json
    return complexjson.loads(self.text, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/simplejson/__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Macs-MBP:GeforceNow Mac$ 

Я пытался просмотреть другие вопросы на этом сайте, но не нашел ни одного, который был бы похож на мою проблему. Вы не можете получить прямой доступ к ссылке для просмотра данных JSON (по крайней мере, я не думаю, что вы можете ..). Это, вероятно, очень простой вопрос, но я все равно задам его (извините, если это так). Любая помощь приветствуется, спасибо! :)

1 Ответ

0 голосов
/ 02 июля 2018

Похоже, у этой строки есть проблема:

r = requests.post('https://forms.nvidia.eu/FP_20161221_GFN_Early_Access/process?isJs=1&returnAs=json', data={'First_Name': data['fname'], 'Last_Name': data['lname'], 'email': email1, 'Platform': 'PC', 'Age': rando1, 'region': 'en_us'})

Согласно документам , когда вы передаете словарь в сообщение, вы должны использовать параметр json вместо параметра data.

Я думаю, что это поможет. Трудно сказать, так как в вашем случае сервер возвращает ошибки (501 Not Implemented и 503 Service Unavailable), но код действует так, как если бы они были успешными. Успешные серверные транзакции должны возвращать коды в диапазоне 200.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...