दिलचस्प पोस्ट
AngularJS द्वारा जनरेट किए गए एक चुनिंदा सूची के लिए एक पूर्व-चयन कैसे करें? Asp.net (वेबफॉर्म्स) के लिए <optgroup> s के साथ ड्रॉपडाउन सूची नियंत्रण? आईओएस 7 के बाद से सूचकांक पाथ फॉरसेल रिटर्न अनुमति अस्वीकृति: एंड्रॉइड में प्रसारण भेजने की अनुमति नहीं है चयनित रेडियो बटन का मूल्य कैसे प्राप्त करें? xampp apache फिर से लिखना काम नहीं कर रहा है स्क्रिप्ट खुले होने पर गूंज प्रदर्शित नहीं करने के लिए अगर (isset ($ _ POST ) का उपयोग करना काम नहीं कर रहा है कुकीज़ में अनुमत वर्ण कस्टम अंगुलियोज निर्देशों के लिए 'प्रतिस्थापन' सुविधा का उपयोग कैसे करें? सभी प्रोटोकॉल-संबंधित यूआरएल का उपयोग क्यों करते हैं? शैलियों और सीएसएस का इस्तेमाल करते हुए पांडा डेटाफ़्रेम HTML तालिका अजगर के भीतर पाठ का रंग बदलें MySQL के लिए हटाए गए 'रूट' उपयोगकर्ता और पासवर्ड को पुनर्स्थापित करना JavaScript या jQuery के साथ टेक्स्टबॉक्स की अधिकतम लंबाई निर्धारित करना जावास्क्रिप्ट में ऑब्जेक्ट का ऑब्जेक्ट कैसे अपनी संपत्ति से प्राप्त करें किसी TForm को अन्य TForm में एम्बेड करते समय मुद्दों से कैसे बचें?

सुंदर सूप के साथ विशेष पाठ के साथ टैग कैसे प्राप्त करें?

मेरे पास निम्न HTML (लाइन ब्रेक के साथ चिह्नित है \ n):

... <tr> <td class="pos">\n "Some text:"\n <br>\n <strong>some value</strong>\n </td> </tr> <tr> <td class="pos">\n "Fixed text:"\n <br>\n <strong>text I am looking for</strong>\n </td> </tr> <tr> <td class="pos">\n "Some other text:"\n <br>\n <strong>some other value</strong>\n </td> </tr> ... 

मैं किस प्रकार के पाठ को ढूंढ रहा हूं ? नीचे दिया गया कोड पहले पाया गया मान देता है, इसलिए मुझे किसी भी तरह फिक्स्ड टेक्स्ट के द्वारा फ़िल्टर करना होगा।

 result = soup.find('td', {'class' :'pos'}).find('strong').text 

अपडेट करें अगर मैं निम्नलिखित कोड का उपयोग करता हूं:

 title = soup.find('td', text = re.compile(ur'Fixed text:(.*)', re.DOTALL), attrs = {'class': 'pos'}) self.response.out.write(str(title.string).decode('utf8')) 

तो यह सिर्फ फिक्स्ड टेक्स्ट देता है:

Solutions Collecting From Web of "सुंदर सूप के साथ विशेष पाठ के साथ टैग कैसे प्राप्त करें?"

आप findAll के पाठ पैरामीटर में एक नियमित अभिव्यक्ति, जैसे, पास कर सकते हैं:

 import BeautifulSoup import re columns = soup.findAll('td', text = re.compile('your regex here'), attrs = {'class' : 'pos'}) 

यह पोस्ट मुझे मेरे जवाब पर मिली, भले ही उत्तर इस पोस्ट से गुम हो गया है। मुझे लगा कि मुझे वापस देना चाहिए

यहां चुनौती BeautifulSoup.find के असंगत व्यवहार में है। पाठ के बिना और बिना खोज करते समय

नोट: यदि आपके पास खूबसूरत सूप है, तो आप इसे स्थानीय स्तर पर जांच सकते हैं:

 curl https://gist.githubusercontent.com/RichardBronosky/4060082/raw/test.py | python 

कोड: https://gist.github.com/4060082

 # Taken from https://gist.github.com/4060082 from BeautifulSoup import BeautifulSoup from urllib2 import urlopen from pprint import pprint import re soup = BeautifulSoup(urlopen('https://gist.githubusercontent.com/RichardBronosky/4060082/raw/test.html').read()) # I'm going to assume that Peter knew that re.compile is meant to cache a computation result for a performance benefit. However, I'm going to do that explicitly here to be very clear. pattern = re.compile('Fixed text') # Peter's suggestion here returns a list of what appear to be strings columns = soup.findAll('td', text=pattern, attrs={'class' : 'pos'}) # ...but it is actually a BeautifulSoup.NavigableString print type(columns[0]) #>> <class 'BeautifulSoup.NavigableString'> # you can reach the tag using one of the convenience attributes seen here pprint(columns[0].__dict__) #>> {'next': <br />, #>> 'nextSibling': <br />, #>> 'parent': <td class="pos">\n #>> "Fixed text:"\n #>> <br />\n #>> <strong>text I am looking for</strong>\n #>> </td>, #>> 'previous': <td class="pos">\n #>> "Fixed text:"\n #>> <br />\n #>> <strong>text I am looking for</strong>\n #>> </td>, #>> 'previousSibling': None} # I feel that 'parent' is safer to use than 'previous' based on http://www.crummy.com/software/BeautifulSoup/bs4/doc/#method-names # So, if you want to find the 'text' in the 'strong' element... pprint([t.parent.find('strong').text for t in soup.findAll('td', text=pattern, attrs={'class' : 'pos'})]) #>> [u'text I am looking for'] # Here is what we have learned: print soup.find('strong') #>> <strong>some value</strong> print soup.find('strong', text='some value') #>> u'some value' print soup.find('strong', text='some value').parent #>> <strong>some value</strong> print soup.find('strong', text='some value') == soup.find('strong') #>> False print soup.find('strong', text='some value') == soup.find('strong').text #>> True print soup.find('strong', text='some value').parent == soup.find('strong') #>> True 

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