Reputation: 51
I want to select a value from a dropdown menu on a website using Python, the website is: http://web3.dgpa.gov.tw/WANT03FRONT/AP/WANTF00001.aspx?mode=PC
<select id="ctl00_ContentPlaceHolder1_drpWORK_PLACE" class="CDropDownList160PX" name="ctl00$ContentPlaceHolder1$drpWORK_PLACE">
<option value=""></option>
<option value="00">00-不拘</option>
<option value="100">---大台北地區---</option>
<option value="10">10-臺北市</option>
<option value="23">23-新北市</option>
<option value="200">---桃竹苗地區---</option>
<option value="30">30-新竹市</option>
<option value="31">31-新竹縣</option>
<option value="33">33-桃園市</option>
<option value="35">35-苗栗縣</option>
<option value="300">---中彰投地區---</option>
<option value="42">42-臺中市</option>
<option value="50">50-彰化縣</option>
<option value="54">54-南投縣</option>
<option value="400">---雲嘉南地區---</option>
<option value="60">60-嘉義市</option>
<option value="61">61-嘉義縣</option>
<option value="63">63-雲林縣</option>
<option value="72">72-臺南市</option>
<option value="500">---高高屏地區---</option>
<option value="82" selected="selected">82-高雄市</option>
<option value="90">90-屏東縣</option>
<option value="600">-----基宜地區-----</option>
<option value="20">20-基隆市</option>
<option value="26">26-宜蘭縣</option>
<option value="700">-----花東地區-----</option>
<option value="95">95-臺東縣</option>
<option value="97">97-花蓮縣</option>
<option value="800">-----離島地區-----</option>
<option value="21">21-福建省連江縣</option>
<option value="88">88-澎湖縣</option>
<option value="89">89-金門縣</option>
</select>
I want to select
<option value="82" selected="selected">82-高雄市</option>
then submit it using Python, here is my code so far:
from mechanize import Browser
br = Browser()
br.open("http://web3.dgpa.gov.tw/WANT03FRONT/AP/WANTF00001.aspx?mode=PC")
br.select_form(nr=0)
Update: Can select person kind dropdown and work place dropdown now.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from mechanize import Browser
br = Browser()
br.set_handle_robots(False)
br.open("http://web3.dgpa.gov.tw/WANT03FRONT/AP/WANTF00001.aspx?mode=PC")
br.select_form("aspnetForm")
# select work place
control = br.form.find_control("ctl00$ContentPlaceHolder1$drpWORK_PLACE")
for item in control.items:
# item.name
# 63 == 雲林, 82 == 高雄
if item.name == "82":
item.selected = True
# select person kind
control = br.form.find_control("ctl00$ContentPlaceHolder1$drpPERSON_KIND")
for item in control.items:
if item.name == "11":
item.selected = True
# fill in 職系 textfield
br['ctl00$ContentPlaceHolder1$txtSYSNAM'] = "一般行政"
html = (br.submit()).read()
print html
Upvotes: 1
Views: 4424
Reputation: 4318
I think you can find your answers in the form documentation. Based on documentation value of select
controls must be a list even if it's single value select. If you just want to set an item to select this might be helpful.
from mechanize import Browser
br = Browser()
br.open("http://web3.dgpa.gov.tw/WANT03FRONT/AP/WANTF00001.aspx?mode=PC")
# walk through each input control in the form:
for control in br.select_form(nr=0):
# find the intended <select>
if control.type=="select" and control.name=="ctl00$ContentPlaceHolder1$drpWORK_PLACE":
# the value must be a list. because select is a list.
control.value = ["82"]
for item in control.items:
if item.value == "82":
item.selected = True
else:
item.selected = False
Upvotes: 1