2016-03-31 2 views
1

Mechanizeを使用して、ページのすべてのフォームを取得できます。私のページについてはMechanizeでbr.forms()のキーと値を取得する

for f in br.forms(): 
    print f 

、それは私にこのような情報を提供します:

<HiddenControl(assoc_term_in=201535) (readonly)> 
    <HiddenControl(CRN_IN=34688) (readonly)> 
    <HiddenControl(start_date_in=03/28/2016) (readonly)> 
    <HiddenControl(end_date_in=06/11/2016) (readonly)> 
    <HiddenControl(SUBJ=ECEC) (readonly)> 
    <HiddenControl(CRSE=451) (readonly)> 
    <HiddenControl(SEC=001) (readonly)> 
    <HiddenControl(LEVL=Undergraduate Quarter) (readonly)> 
    <HiddenControl(CRED= 3.000) (readonly)> 
    <HiddenControl(GMOD=Standard Letter) (readonly)> 
    <HiddenControl(TITLE=Computer Arithmetic) (readonly)> 
    <HiddenControl(MESG=DUMMY) (readonly)> 
    <SelectControl(RSTS_IN=[*, WR])> 
    <HiddenControl(assoc_term_in=201535) (readonly)> 
    <HiddenControl(CRN_IN=31109) (readonly)> 
    <HiddenControl(start_date_in=03/28/2016) (readonly)> 
    <HiddenControl(end_date_in=06/11/2016) (readonly)> 
    <HiddenControl(SUBJ=BIO) (readonly)> 
    <HiddenControl(CRSE=141) (readonly)> 
    <HiddenControl(SEC=073) (readonly)> 
    <HiddenControl(LEVL=Undergraduate Quarter) (readonly)> 
    <HiddenControl(CRED= 0.000) (readonly)> 
    <HiddenControl(GMOD=Non Gradeable Unit) (readonly)> 
    <HiddenControl(TITLE=Essential Biology) (readonly)> 
    <HiddenControl(MESG=DUMMY) (readonly)> 
    <SelectControl(RSTS_IN=[*, WD])> 

しかし、私は印刷などf変数内の値だけ、ただTITLESUBJCRSEをプリントアウトしたいです

ECEC 451 Computer Arithmetic 

私はf.valuef.value、を使用してみました、運がない。

私が前に働いてこれを得たが、私はあなただけの特定の値をしたいとあなたが鍵を知っている場合、バージョン管理

答えて

1

にコードをコミットするというコメントを削除するとき、私は、コードを失った:

In [18]: response = br.open("http://www.w3schools.com/html/html_forms.asp") 

In [19]: f = list(br.forms()) 

In [20]: f[0].get_value("firstname") 
Out[20]: 'Mickey' 
In [21]: f[0].get_value("lastname") 
Out[21]: 'Mouse' 
あなたは f._pairs()ですべてのペアにアクセスすることができ

for f in br.forms(): 
    print(f._pairs()) 

response = br.open("http://www.w3schools.com/html/html_forms.asp") 
for f in br.forms(): 
    print(f) 
    print(f._pairs()) 

あなたはそれがあなたのキーと値のペアを与える参照してください。

<GET http://www.w3schools.com/html/action_page.php application/x-www-form-urlencoded 
    <TextControl(firstname=Mickey)> 
    <TextControl(lastname=Mouse)> 
    <SubmitControl(<None>=Submit) (readonly)>> 
[('firstname', 'Mickey'), ('lastname', 'Mouse')] 
<GET http://www.w3schools.com/html/action_page.php application/x-www-form-urlencoded 
    <TextControl(firstname=Mickey)> 
    <TextControl(lastname=Mouse)> 
    <SubmitControl(<None>=Submit) (readonly)>> 
[('firstname', 'Mickey'), ('lastname', 'Mouse')] 
<GET http://www.w3schools.com/html/html_forms.asp application/x-www-form-urlencoded 
    <TextControl(err_email=)> 
    <TextControl(err_url=) (disabled)> 
    <TextareaControl(err_desc=)> 
    <IgnoreControl(<None>=<None>)>> 
[('err_email', ''), ('err_desc', '')] 
+0

ありがとうございました!これを試して、あなたに戻ってきます! – theGreenCabbage

+0

こんにちはPadraic。ですから、 'f.pairs()'はタプルなので、インデックスを使ってアクセスする必要があります。 'for f for br.forms():f._pairs()のpのために:print p [1]'。これは現在、私がタプル内の値にアクセスする1つの方法ですが、これはすべてを出力します。私はキーを指定したいので、 'br.forms()'と 'f.pairs()'を 'list()'に変換しましたが、次のエラーが出ます: 'tupleインデックスはstrではなく整数でなければなりません' – theGreenCabbage

+0

@theGreenCabbage、あなたがキーを知っていて、それがどのフォームにあるのかを知っていれば、フォーム上の' the_form.get_value( "key") 'を呼ぶことで、あなたが望む値を得ることができます。 –

関連する問題