2011-09-24 95 views
6

我真的很困惑。我基本上是試圖填寫一個網站上的機械化python表單。除了下拉菜單,我還有一切工作。我用什麼來選擇它,以及爲價值做些什麼?我不知道我是否應該把選擇的名稱或它的數值。幫助將不勝感激,謝謝。如何使用python中的mechanize選擇下拉菜單項?

代碼片段:

try: 
     br.open("http://www.website.com/") 
     try: 
      br.select_form(nr=0) 
      br['number'] = "mynumber" 
      br['from'] = "[email protected]" 
      br['subject'] = "Yellow" 
      br['carrier'] = "203" 
      br['message'] = "Hello, World!" 
      response = br.submit() 
     except: 
      pass 
    except: 
     print "Couldn't connect!" 
     quit 

我遇到的載體,這是一個下拉菜單的麻煩。

+0

請給出一個具體示例。顯示你嘗試過的代碼以及當你嘗試過時發生了什麼? – infrared

+0

好的,現在發佈 – user962889

+0

如果您將問題標題重寫爲問題摘要而不是似乎是標籤列表(標籤列表僅限於此),那麼您可能會得到更好的答案。而且沒有必要說「請幫助!」,因爲如果你問一個問題,你顯然是在尋求幫助。 –

回答

3

根據mechanize documentation examples,您需要訪問form對象的屬性,而不是browser對象。另外,對於選擇控制,您需要將值設置爲一個列表:

br.open("http://www.website.com/") 
br.select_form(nr=0) 
form = br.form 
form['number'] = "mynumber" 
form['from'] = "[email protected]" 
form['subject'] = "Yellow" 
form['carrier'] = ["203"] 
form['message'] = "Hello, World!" 
response = br.submit() 
+0

我不確定你是否會回覆,因爲我昨天問過這個問題,但是對於「運營商」,我是否會將值設置爲下拉列表或值的名稱?例如:名稱:Foo值:129 – user962889

+0

您可以發佈有問題的表單的HTML,以便我可以正確測試並回復? – infrared

2

對不起,我的復活死去很久的帖子,但是這是我能找到在谷歌仍然是最好的答案,它不工作。我花了更多的時間比我不願承認的時候,我發現了它。紅外線對形式物體是正確的,但對其他物體並不重要,他的代碼不起作用。以下是一些適用於我的代碼(儘管我確定存在更優雅的解決方案):

# Select the form 
br.open("http://www.website.com/") 
br.select_form(nr=0) # you might need to change the 0 depending on the website 

# find the carrier drop down menu 
control = br.form.find_control("carrier")  

# loop through items to find the match 
for item in control.items: 
    if item.name == "203": 

    # it matches, so select it 
    item.selected = True 

    # now fill out the rest of the form and submit 
    br.form['number'] = "mynumber" 
    br.form['from'] = "[email protected]" 
    br.form['subject'] = "Yellow" 
    br.form['message'] = "Hello, World!" 
    response = br.submit() 

    # exit the loop 
    break 
+0

您可能可以做control.disabled = False control.value = [「203」]而不是循環。讓我知道 – Lazik

相關問題