mechanize を使用してフォーム内のアイテムの状態を変更する場合、Python で次のようなリストを作成する必要があります。
['2009', '2008', '2007', '2006', '2005', '2004',]
リストは末尾のコンマで終了する必要があります。そうしないと機能しません。たとえば、次のコードは機能します。
br = mechanize.Browser()
br.select_form(nr=0)
br['ctl03'] = ['2009', '2008', '2007',]
ただし、次のコードは機能しません。
br = mechanize.Browser()
br.select_form(nr=0)
br['ctl03'] = ['2009', '2008', '2007']
これは、末尾のコンマを使用しない場合に表示されるエラー メッセージです。
Traceback (most recent call last):
File "C:/Users/Renato/PycharmProjects/Agrolink/faostat.py", line 43, in <module>
br['ctl03$DesktopThreePanes1$ThreePanes$ctl01$TMyears'] = ['2009', '2008', '2007']
File "C:\Python26\lib\site-packages\mechanize\_form.py", line 2782, in __setitem__
control.value = value
File "C:\Python26\lib\site-packages\mechanize\_form.py", line 1977, in __setattr__
self._set_value(value)
File "C:\Python26\lib\site-packages\mechanize\_form.py", line 1985, in _set_value
raise TypeError("ListControl, must set a sequence")
TypeError: ListControl, must set a sequence
Process finished with exit code 1
さて、午後全体にわたってこの問題に対処した後、末尾のコンマなしで必要なことを実行するには、次の方法があることを知りました。
mylist = ['2009', '2008', '2007']
br.set_value(mylist, name="ctl03")