दिलचस्प पोस्ट
एक ArrayList खाली करें या सिर्फ एक नया बनाएं और पुराने को कचरा एकत्रित करने दें? रेल पेपरक्लिप और यात्री `पहचान 'आदेश` द्वारा मान्यता प्राप्त नहीं है विशिष्ट ईवेंट हैंडलर को कैसे खोलें JQuery में डबल-क्लिक रोकने के लिए लिंक को अक्षम करना एक आईओएस डिवाइस पर राम की उपलब्ध राशि का निर्धारण करना ES6 मॉड्यूल: स्थिर तरीकों या एक से अधिक व्यक्तिगत विधियों का एकल वर्ग निर्यात करें पीजी :: कनेक्शनबैड – सर्वर से कनेक्ट नहीं हो सका: कनेक्शन ने इनकार कर दिया जावास्क्रिप्ट द्वारा मैं PHP कार्यों को कैसे कॉल कर सकता हूं? सी # – कैसे वर्ग क्षेत्रों और सेट गुणों के माध्यम से दोबारा लिंक सूची में एक नोड जोड़ने पर डबल सूचक का उपयोग करने का क्या कारण है? क्या एक वादा किया जाना चाहिए? संदेश को त्रुटि में लपेटा जाना चाहिए? विदेशी कुंजी बाधाओं का कारण हो सकता है चक्र या कई कैस्केड पथ? सूचियों में डुप्लिकेट निकालना मैं php में एक यूनिक्स टाइमस्टैम्प में 24 घंटे कैसे जोड़ूं? JQuery के बिना एक्सेस 'डेटा-' विशेषता

क्लास के तत्वों को कैसे ढूंढें

मुझे सुंदरसूप का उपयोग करते हुए "वर्ग" विशेषता के साथ html तत्वों को पार्स करने में समस्या हो रही है कोड ऐसा दिखता है

soup = BeautifulSoup(sdata) mydivs = soup.findAll('div') for div in mydivs: if (div["class"]=="stylelistrow"): print div 

मुझे स्क्रिप्ट खत्म होने के बाद "उसी पंक्ति" पर एक त्रुटि मिलती है

 File "./beautifulcoding.py", line 130, in getlanguage if (div["class"]=="stylelistrow"): File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__ return self._getAttrMap()[key] KeyError: 'class' 

मैं छुटकारा या इस त्रुटि कैसे प्राप्त करूं?

Solutions Collecting From Web of "क्लास के तत्वों को कैसे ढूंढें"

आप बीएस 3 का उपयोग करते हुए किसी दिए गए वर्ग के साथ उन डिवीज़ों को खोजने के लिए अपनी खोज को परिष्कृत कर सकते हैं:

 mydivs = soup.findAll("div", { "class" : "stylelistrow" }) 

प्रलेखन से:

सुंदर सूप 4.1.2 के रूप में, आप कीवर्ड वर्ग class_ से कीवर्ड का उपयोग कर खोज सकते हैं:

 soup.find_all("a", class_="sister") 

जो इस मामले में होगा:

 soup.find_all("div", class_="stylelistrow") 

यह इसके लिए भी काम करेगा:

 soup.find_all("div", class_="stylelistrowone stylelistrowtwo") 

अपडेट: 2016 सुंदर सूप के नवीनतम संस्करण में, विधि 'खोज' सभी का नाम बदलकर 'खोज' कर दिया गया है। आधिकारिक दस्तावेजों से लिंक करें

विधि नामों की सूची बदल गई

इसलिए उत्तर होगा

 soup.find_all("html_element", class_="your_class_name") 

सुंदर सूप के लिए विशिष्ट 3:

 soup.findAll('div', {'class': lambda x: x and 'stylelistrow' in x.split() } ) 

इन सभी को मिलेगा:

 <div class="stylelistrow"> <div class="stylelistrow button"> <div class="button stylelistrow"> 

एक सीधे आगे रास्ता होगा:

 soup = BeautifulSoup(sdata) for each_div in soup.findAll('div',{'class':'stylelist'}): print each_div 

सुनिश्चित करें कि आप खोज के आवरण को लेते हैं , यह खोज नहीं है

यह जांचने की कोशिश करें कि क्या div में पहली बार एक वर्ग विशेषता है:

 soup = BeautifulSoup(sdata) mydivs = soup.findAll('div') for div in mydivs: if "class" in div: if (div["class"]=="stylelistrow"): print div 

यह मेरे लिए क्लास विशेषता तक पहुंचने के लिए काम करता है (सुंदर सूप 4 पर, दस्तावेज़ीकरण के विपरीत जो कहते हैं)। KeyError एक सूची में एक शब्दकोष नहीं लौटाया जाता है

 for hit in soup.findAll(name='span'): print hit.contents[1]['class'] 

यह मेरे लिए काम किया:

 for div in mydivs: try: clazz = div["class"] except KeyError: clazz = "" if (clazz == "stylelistrow"): print div 

क्लास के तत्वों को कैसे ढूंढें

मुझे सुंदरसूप का उपयोग करते हुए "वर्ग" विशेषता के साथ HTML तत्वों को पार्स करने में समस्या हो रही है

आप आसानी से एक वर्ग से पा सकते हैं, लेकिन अगर आप दो वर्गों के चौराहे से ढूंढना चाहते हैं, तो यह थोड़ा अधिक कठिन है,

प्रलेखन से (जोर दिया गया):

यदि आप दो या दो से अधिक सीएसएस वर्गों से मेल खाने वाले टैग खोजना चाहते हैं, तो आपको सीएसएस चयनकर्ता का उपयोग करना चाहिए:

 css_soup.select("p.strikeout.body") # [<p class="body strikeout"></p>] 

स्पष्ट होने के लिए, यह केवल पी टैग चुनता है जो स्ट्राइकआउट और बॉडी क्लास दोनों हैं।

कक्षाओं के किसी समूह में किसी भी चौराहे को खोजने के लिए (प्रतिच्छेदन नहीं, लेकिन संघ), आप class_ कीवर्ड तर्क (4.1.2 के अनुसार) को एक सूची दे सकते हैं:

 soup = BeautifulSoup(sdata) class_list = ["stylelistrow"] # can add any other classes to this list. # will find any divs with any names in class_list: mydivs = soup.find_all('div', class_=class_list) 

यह भी ध्यान रखें कि खोजने के लिए सभी का नाम बदल दिया गया है camelcase से अधिक पायथनिक find_all