2013-02-13 13 views
6

का उपयोग कर चयनित विकल्प ढूंढें मैं केवल चयन के चयनित विकल्प प्राप्त करना चाहता हूं। उदाहरण के लिए:सुंदर सूप

<select> 
    <option value="0">2002/12</option> 
    <option value="1">2003/12</option> 
    <option value="2">2004/12</option> 
    <option value="3">2005/12</option> 
    <option value="4">2006/12</option> 
    <option value="5" selected>2007/12</option> 
</select> 

मैं जानता हूँ कि मैं

theSelectTag.findAll('option',attrs={'selected':''}) 

कर सकते हैं लेकिन यह है कि सभी विकल्प लौटा रहा है। क्या उन सभी तत्वों को प्राप्त करने का कोई तरीका है जहां एक विशेषता मौजूद है? कृपया ध्यान दें, मैं सभी के लिए पूछता हूं, क्योंकि जिस साइट पर मैं स्क्रैपिंग कर रहा हूं, इसमें कई विकल्पों के लिए चयनित विशेषता शामिल है।

मैं अजगर 2.7 और ब्यूटीफुल सूप 4.1.2

उत्तर

7

विशेषता के मूल्य के रूप में True पासिंग उस विशेषता के साथ सभी तत्वों की भरपाई कर देंगे उपयोग कर रहा हूँ:

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('''<select> 
... <option value="0">2002/12</option> 
... <option value="1">2003/12</option> 
... <option value="2">2004/12</option> 
... <option value="3">2005/12</option> 
... <option value="4">2006/12</option> 
... <option value="5" selected>2007/12</option> 
... </select>''') 
>>> soup.find_all('option', selected=True) 
    [<option selected="" value="5">2007/12</option>] 
>>> soup.find_all('option', {'selected': True}) 
    [<option selected="" value="5">2007/12</option>] 

और lxml साथ:

>>> from lxml import etree 
>>> root = etree.HTML('''<select> 
    <option value="0">2002/12</option> 
    <option value="1">2003/12</option> 
    <option value="2">2004/12</option> 
    <option value="3">2005/12</option> 
    <option value="4">2006/12</option> 
    <option value="5" selected>2007/12</option> 
</select>''') 
>>> root.xpath('//option[@selected]') 
    [<Element option at 0x228b7d0>] 
+0

क्या कोई कारण है कि यह मेरे सिस्टम पर काम नहीं करेगा? अगर मैं आपके चुने हुए तर्कों में से किसी एक को कोशिश करता हूं तो मुझे एक खाली सेट मिल रहा है। मैंने पुष्टि की कि अगर मैं उन्हें बाहर कर दूं तो मुझे पूरा सेट मिल रहा है। मैं पाइथन 2.7 और सुंदर सूप का उपयोग कर रहा हूं 4.1.2 –

+0

@EricG: यह अजीब है। क्या आपने 'lxml' और' html5lib' इंस्टॉल करने का प्रयास किया है? – Blender

+0

मैंने नहीं किया है। यह मुख्य रूप से काम कर रहा है और मैं इस मुद्दे के आसपास आसानी से काम कर सकता हूं। बस सोचा कि यह सुंदर सूप के साथ किया जा सकता था। –

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