2

Webクローラーを作成するためにツイルとPythonを使用しています。showforms()は

Form name=customRatesForm (#1)
## ## __Name__________________ __Type___ __ID________ __Value__________________
10    originState              hidden    originState  TN 
11    destState                hidden    destState    IL 
12    originZip                text      originZip    37130 
13    destZip                  text      destZip      60602 
16    classes                  select    classes1     ['0000'] of ['0000', '0500', '0550', ... 
17    weight                   text      weight1      600 
18    weight                   text      weight2       
19    weight                   text      weight3       
20    weight                   text      weight4       
30 1  submit                   submi ... submit      

読みやすくするために、ほとんどの行を削除しました。私の問題は、実際には12の選択があり、それらすべてに「クラス」という名前が付いていることです。これらはリストとしてCGIを通過します。しかし、ツイルはそれらを区別できないようです。また、私が走るとき

fv('1', 'classes', '0500')

次のエラーが発生します。

_mechanize_dist.ClientForm.AmbiguityError: id=None name='0500' label=None

選択範囲の名前をIDで変更し、submit関数を書き直してjQueryセレクターを使用し、「name」属性を「classes」に再割り当てするなど、いくつかの回避策を試しました。

$('.myclasses').attr('name', 'classes');

これをブラウザで見ると、期待通りに再割り当てされているようです。ただし、ツイルのヘッダーには、「classes1」、「classes2」などの名前で送信するものとして表示されます。

どんな助けでも大歓迎です。私が知っている回避策がありません。これは私のページではないので、「クラス」が選択するリストに対するコントローラーの期待に縛られています。

4

1 に答える 1

1

私が今まで見つけた限りでは、ツイルでこれを行う方法はありません。どんな解決策もツイル以外の回避策になるでしょう。

于 2010-10-08T15:25:52.327 に答える