首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python请求JSON解析: JSONDecodeError:期望值:行1列1(字符0)

Python请求JSON解析: JSONDecodeError:期望值:行1列1(字符0)
EN

Stack Overflow用户
提问于 2018-05-03 05:40:13
回答 1查看 2.6K关注 0票数 2

我在制作配置文件生成器时遇到了这个问题。

这是我的代码:

代码语言:javascript
复制
    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)

这是完整的日志,包括错误:

代码语言:javascript
复制
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数据(至少我不认为您可以..)。这可能是一个非常简单的问题,但无论如何我都会问(如果是的话,很抱歉)。非常感谢您的帮助,谢谢!:)

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 03:29:06

看起来这一行有一个问题:

代码语言:javascript
复制
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'})

According to the docs,当您将字典传递给post时,应该使用json参数而不是data参数。

我想这会有帮助的。很难说,因为在您的例子中,服务器返回错误(501 Not Implemented503 Service Unavailable),但是代码表现得好像它们是成功的一样。成功的服务器事务应返回200范围内的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50143937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档