2011-09-18 12 views
5

एचटीएमएल कि मैं मशीनीकरण पार्स करने के लिए कोशिश कर रहा हूँ है:पायथन मैकेनाइजेशन: जब किसी वेब पेज में समान नाम होता है तो ड्रॉपडाउन सूची का चयन कैसे करें?

<select id="topic_id2" name="topics[]" title="blabla" tabindex="4" class="createSelect"> 
here go options 

लेकिन फिर ठीक नीचे यह वहाँ निम्नलिखित कोड के साथ एक और लटकती है,:

<select id="topic_id3" name="topics[]" title="optional" tabindex="5" class="createSelect"> 

अब अगर यह बिल्कुल में मदद करता है , मुझे बाद वाले से किसी भी मूल्य का चयन करने की आवश्यकता नहीं है, क्योंकि यह वैकल्पिक है।

जब मैं

br = mechanize.Browser() 
br.select_form(name="form") 
br["topics[]"] = ["Internet"] 

कोशिश मैं:

mechanize._form.AmbiguityError: more than one control matching name 'topics[]' 

वहाँ एक रास्ता मैं अपने आईडी के आधार पर एक नियंत्रण का चयन कर सकते है, mechanize.Browser() (जबकि बनाए रखने का उपयोग कर अन्य सभी फॉर्म वाक्यविन्यास)?

धन्यवाद

+5

आप फॉर्म में अपनी अनुक्रमणिका द्वारा नियंत्रणों तक पहुंच सकते हैं, यह जवाब देखें http://stackoverflow.com/questions/6482308/differentiating-between-html-form-select-items-with-the-same-name/ 6483458 # 6483458 – cerberos

+0

बहुत बहुत धन्यवाद, यह काम किया। –

+0

क्या आप लिंक में जवाब +1 कर सकते हैं? – cerberos

उत्तर

1

mechanize के लिए बाहरी प्रलेखन काफी छोटा है और केवल कुछ उदाहरण हैं, लेकिन इन-कोड प्रलेखन कहीं अधिक व्यापक है।

उदाहरण के साथ form नामक उदाहरण का परीक्षण नहीं किया गया है, तो आपको form.find_control(id="topic_id3") पर कॉल करने और आप जो चाहते हैं उसे प्राप्त करने में सक्षम होना चाहिए। मुझे यकीन नहीं है कि इसे Browser ऑब्जेक्ट के साथ कैसे करें, लेकिन आपने br.find_control(id="topic_id3") को आजमाया है?

संबंधित मुद्दे