2011-01-06 12 views
0

ユーザーIDとパスワードの1つのリストが2つあります。 easyguiがそうすることを私にプロンプ​​トを与えたとき、私は2リスト、ループ、ログイン

#!/usr/bin/env python 
from mechanize import Browser 
from BeautifulSoup import BeautifulSoup 
import easygui 

br = Browser() 
hid = easygui.enterbox (msg="Enter Hotel ID", title="HID", default="", strip=True) 
pwd = easygui.enterbox (msg="Enter Password", title="HID", default="", strip=True) 
url = "http://example.com" 
page = br.open(url) 
#Select form on front page, input values and submit 
br.select_form(nr=0) 
br["UN"] = hid 
br["txtID"] = pwd 
results = br.submit().read() 

#Printing XML results to a file by appending 
myfile = open('C:\\Python\\xml\\output.xml','a') 
myfile.write(results) 
myfile.close() 

#Printing txt results to a file by appending 
myfile = open('C:\\Python\\xml\\output.txt','a') 
myfile.write(results) 
myfile.close() 

...私は必要なデータから、ウェブサイトや擦り傷にログインスクリプトを持ってalreadだから私入力ログイン/パスワードの詳細。私は二つのリスト...

userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml'] 
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf'] 

にすべてのパスワードを保存する場合、私は、ループの各反復のために一度に値1をインポートするために、整数のループを使用して試したと私はいない成功を収めて試してみました。私はどのように私はこれを行うことができますが、私の特定のニーズに合うように見えるものについていくつかのヘルプとチュートリアルを探しました。誰かが正しい方向に私を指すことができるか、私はこの機能を実装するために使用できるコードを提案することができます。

ありがとうございました。

答えて

1

私はあなたの要件を完全に理解していません。両方のリストを並行して繰り返し、各反復で対応するユーザー名とパスワードのペアを抽出しますか?

もしそうなら、

userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml'] 
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf'] 
for username, password in zip(userlist, pwordlist): 
    print "Username:", username, " - Password:", password 
print "Done!" 

を行う必要があります。

しかし、より良いデータ構造があるかどうかを確認するには、marcogの辞書ソリューションをお勧めします。

+0

私が欲しいものであり、あなたを使用して、その私はそれを最初のユーザー/ pwordを拾うことができます。しかし、すべてのペアではなく、最初のペアのみが出力されます。私はループをもう一度実行するための行がないことを確信しています。 – Mike

+0

これは変です。それらのすべてをループする必要があります。私は完全なサンプルで私の投稿を編集します。 –

2

ユーザーが入力したパスワードが正しいことを確認するには、以下のような辞書に保存する方がよいでしょう。 ...と入力した辞書の残りの部分を入力する必要があります。

passwords = { '254376xml': 'mbhg934uh', '254371xml': 'hj2r93kh8s', ... } 
def check_password(username, password): 
    if username not in passwords: 
    return False # username not found 
    return password == passwords[username] # check the password is correct 

次に、このようにそれを呼び出す:私はあなたがacghieveしようと思って

>>> check_password('254371xml', 'hj2r93kh8s') # correct password 
True 
>>> check_password('254371xml', 'wrong') # wrong password 
False 
>>> check_password('non-existant', 'wrong') # non-existant user 
False 
+0

助けてくれてありがとう、私は各リストから次の項目をピックアップするたびにプログラムをループさせようとしています。項目を使用してログインし、ウェブサイトからデータをスクレープし、次の2ビットの情報でループを再開します。 – Mike

0

がこれです(他の回答から取られたコード)

#!/usr/bin/env python 
from mechanize import Browser 
from BeautifulSoup import BeautifulSoup 
import easygui 

br = Browser() 
userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml'] 
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf'] 

for username, password in zip(userlist, pwordlist): 

    url = "http://example.com" 
    page = br.open(url) 
    #Select form on front page, input values and submit 
    br.select_form(nr=0) 
    br["UN"] = username 
    br["txtID"] = password 
    results = br.submit().read() 

    #Printing XML results to a file by appending 
    myfile = open('C:\\Python\\xml\\output.xml','a') 
    myfile.write(results) 
    myfile.close() 

    #Printing txt results to a file by appending 
    myfile = open('C:\\Python\\xml\\output.txt','a') 
    myfile.write(results) 
    myfile.close() 
+0

パーフェクト!ありがとう。 – Mike

+0

正解として答えを確認できますか? –