2011-07-04 10 views
1

machineizeでフォームを送信して、マシン解析可能なバススケジュールデータを取得しようとしています。SelectControl要素の値を設定できません

しかし、私はそれがリストを必要とするよう

import mechanize 
br = mechanize.Browser() 
br.open("http://www.planibus.sto.ca/HastinfoWeb/StartTimetableForm.aspx") 
br.select_form(name="TimetableQueryForm") 
br["RouteDirectionDynamicComboBox$ComboBox_Input"] = "10 OTTAWA" # works fine, it's a TextControl 
br["DatePicker$DaysDropDownList"] = ["3"] # This is a SelectControl 
### mechanize._form.ItemNotFoundError: insufficient items with name '3' 

mechanize._form.ItemNotFoundError: insufficient items with name '3'が見え設定するためのMechanizeの構文によって窮地に立たさていますが、私は、ほとんど意味がないリスト(中に複数の項目を入力するとき、このことを考えます日付ピッカー)がある私が取得:

mechanize._form.ItemCountError: single selection list, must set sequence of length 0 or 1

私は私の元["3"]は、長さ1の配列だと思いましたか?

ご協力いただきありがとうございます。私はおそらく何かが明らかに欠けているでしょう...

編集:上記の '3'は1つの値であり、WebサイトはUIの次の2週間の値を許可することに注意してください。 、許容値のリストが変更されます。ただ、それでも私が見るのオプションがあり、

答えて

1

3が使用可能な選択オプションの一つではない...私のために動作しません...許容値のいずれかを「3」に置き換えて

<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="14">14</option> 
<option value="15">15</option> 
<option value="16">16</option> 
<option value="17">17</option> 
<option value="18">18</option> 

だからbr["DatePicker$DaysDropDownList"] = ["4"]を試してください。コードがうまくいくはずです。

編集:私は実際にMechanizeのと問題のページを見てみました、私は、ページが読み込まれた後にはJavaScriptがそれらを移入するために使用されていることを想像し、この

import mechanize 
br = mechanize.Browser() 
br.open("http://www.planibus.sto.ca/HastinfoWeb/StartTimetableForm.aspx") 
br.select_form(name="TimetableQueryForm") 
select = br.form.controls[8] # DatePicker$DaysDropDownList 
select.possible_items() 
>>> [] 

は任意のオプションがありませんしてみてください。不幸にもmechanize doesn't support javascriptSelenium Webdriverを使用して必要なデータをスクラップしてみてください。

+0

「3」は、私が(たとえば)「10」で試したと私は同じエラーが上記の編集した答えを参照してください – Philippe

+0

取得:-)有効な回答だった。うん、質問が昨日頼まれました – cerberos

+0

Selenium Webdriverはあまりにもクールです。私はそれに数分を費やして、それが私の問題のもっと良い解決策になるように見える。そして、easy_installセレンでインストールするのは簡単でした。ありがとう! – Philippe

関連する問題