2017-05-26 11 views
2

私はウェブサイトに署名するかなり基本的なリクエストスクリプトを作成しようとしていますが、ウェブサイトには「パス」キーが必要ですが、このPythonを使用しようとするたびに無効な構文のエラーがスローされます。ここに私のコードです:辞書キーワードとして 'pass'を使用してください。

import requests 

with requests.Session() as c: 
    url = 'www.a_url.com' 
    USERNAME = 'a username' 
    PASSWORD = 'a password' 
    c.get(url) 
    login_data = dict(user=USERNAME, pass=PASSWORD, jsok='1', dologin='Login') 
    c.post(url, data=login_data, headers={"Referer": 'www.a_referer.com'}) 
    page = c.get('www.a_page.com') 
    print(page.content) 
    output = open('test.html','w') 
    output.write(str(page.content)) 

は私が与えられていますエラーは次のとおりです。

login_data = dict(user=USERNAME, pass=PASSWORD, jsok='1', dologin='Login') 
             ^
SyntaxError: invalid syntax 

私は「パス」を無視して、単にdictのキーとして使用するのpythonを強制することができますどのように任意のアイデア?

+0

'pass'は、Python – MooingRawr

+0

のキーワードでうんおかげで、私はことを知っているが、私は用途にログインしようとしているウェブサイトは、そのキー – KlusterMonkey

答えて

10

passは識別子であるため、識別子として使用することはできません。これにはdict-literalを使用する必要があります:

login_data = { 
    'user': USERNAME, 
    'pass': PASSWORD, 
    'jsok': '1', 
    'dologin': 'Login', 
} 
+0

として、私はこれを試してみましょう合格! – KlusterMonkey

+0

これは、ありがとう!また、明らかに私は11分以上答えを受け取ることができませんが、これは間違いなく解決されています。 – KlusterMonkey

0

短い答えですが、その構文では使用できません。 passは、returnのように、Pythonの予約キーワードです。

login_data = {"user": USERNAME, "pass": PASSWORD, ...}

これは、より汎用的であり、あなたがキーとして何を使用することができます。

キーとして任意のオブジェクトを設定する別の方法は、この構文を使用することです。

{None: 1, 1: 2, str: int}

+1

まあ、そうではありません。キーとしてハッシュできる_anything_を使用することができます。それは... "{['list!']: 'ダイスはない、TypeErrorは結果になるでしょう'}' – mgilson

+0

問題は「より一般的です」ということではなく、文字列キーはキーワード引数ではなく文字列として書き出されます。 – alexis

関連する問題