2011-05-14 15 views
14

मैं सामग्री "हैलो वर्ल्ड" निकालना चाहता हूं। कृपया ध्यान दें कि पेज पर गुणक <table> और समान <td colspan="2"> भी हैं।सुंदरसूप = एक टैग के भीतर सामग्री निकालें

मैं निम्नलिखित की कोशिश की:

hello = soup.find(text='Name: ') 
hello.findPreviousSiblings 

लेकिन यह कुछ भी नहीं लौटे। निम्नलिखित निकालने "मेरे घर का पता" के साथ समस्या यह

<table border="0" cellspacing="2" width="800"> 
<tr> 
<td colspan="2"><b>Name: </b>Hello world</td> 
</tr> 
<tr> 

इसके अलावा, मैं भी आ रही हैं:

<td><b>Address:</b></td> 

<td>My home address</td> 

मैं भी उपयोग कर रहा हूँ

यहाँ कोड का स्निपेट है टेक्स्ट = "पता:" खोजने के लिए एक ही विधि है, लेकिन मैं अगली पंक्ति में कैसे नेविगेट कर सकता हूं और <td> की सामग्री निकाल सकता हूं?

उत्तर

14

उपयोग अगले बजाय

>>> s = '<table border="0" cellspacing="2" width="800"><tr><td colspan="2"><b>Name: </b>Hello world</td></tr><tr>' 
>>> soup = BeautifulSoup(s) 
>>> hello = soup.find(text='Name: ') 
>>> hello.next 
u'Hello world' 

अगले और पिछले जबकि भाई तरीकों पार्स पेड़

+0

यह कुछ भी नहीं देता है। हैलो = सूप.फिंड (टेक्स्ट = 'नाम:') हैलो.नेक्स्ट – ready

+1

क्या 'नाम:' दस्तावेज़ में कहीं और दिखाई देता है? –

+0

क्षमा करें, यह मेरी गलती पहले थी। अब यह काम कर रहा है। – ready

13

के साथ काम आप क्रम में दस्तावेज़ तत्वों वे पार्सर द्वारा प्रोसेस किया गया के माध्यम से बढ़ते हैं contents ऑपरेटर <tag>text</tag> से text निकालने के लिए अच्छी तरह से काम करता है।


<td>My home address</td> उदाहरण:

s = '<td>My home address</td>' 
soup = BeautifulSoup(s) 
td = soup.find('td') #<td>My home address</td> 
td.contents #My home address 

<td><b>Address:</b></td> उदाहरण:

s = '<td><b>Address:</b></td>' 
soup = BeautifulSoup(s) 
td = soup.find('td').find('b') #<b>Address:</b> 
td.contents #Address: 
संबंधित मुद्दे