2013-04-20 14 views
9

में मैं BeautifulSoup उपयोग कर रहा हूँ एक html पृष्ठ से कुछ सामग्री पार्स करने के लिए।सुझाव() BeautifulSoup

मैं एचटीएमएल से सामग्री मैं चाहता हूँ (अर्थात पाठ एक spanclass MyClass द्वारा परिभाषित में समाहित) निकाल सकते हैं।

<span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span> 

अगर मैं का उपयोग कर पाठ को निकालने के लिए प्रयास करें::

result.get_text() 

मैं प्राप्त:

Lorem ipsumdolor sit amet,consectetur... 

आप जब देख सकते हैं

result = mycontent.find(attrs={'class':'myclass'}) 

मैं इस परिणाम प्राप्त टैग <br> वहां हटा दिया गया है सामग्री के बीच कोई और दूरी नहीं है और दो शब्दों को समेकित किया जाता है।

मैं इस मुद्दे को कैसे हल कर सकता हूं?

+0

प्रयोग करें 'सामग्री' है, तो
की जगह? – Floris

+0

आप इतना है कि मैं इस सवाल का जवाब स्वीकार कर सकते हैं एक उदाहरण में डाल सकते हैं? धन्यवाद – user601836

+0

अभी आईफोन पर। परीक्षण कोड बनाने के लिए कंप्यूटर के पास जाने की आवश्यकता है। मुझे आशा है कि इस दौरान कोई और आपके लिए उदाहरण बनायेगा। – Floris

उत्तर

20

आप BS4 उपयोग कर रहे हैं आप strings उपयोग कर सकते हैं:

" ".join(result.strings) 
+5

या kwarg विभाजक, कि get_text अंदर एक ही बात करता है का उपयोग करें: result.get_text ('विभाजक =' "") -> 'Lorem Ipsum मातम AMET बैठते हैं, consectetur ...' – Leo

10

प्रयोग करें 'सामग्री' है, तो <br> की जगह?

यहाँ एक पूर्ण (कार्य, परीक्षण किया) उदाहरण है:

from bs4 import BeautifulSoup 
import urllib2 

url="http://www.floris.us/SO/bstest.html" 
page=urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

result = soup.find(attrs={'class':'myclass'}) 
print "The result of soup.find:" 
print result 

print "\nresult.contents:" 
print result.contents 
print "\nresult.get_text():" 
print result.get_text() 
for r in result: 
    if (r.string is None): 
    r.string = ' ' 

print "\nAfter replacing all the 'None' with ' ':" 
print result.get_text() 

परिणाम:

The result of soup.find: 
<span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span> 

result.contents: 
[u'Lorem ipsum', <br/>, u'dolor sit amet,', <br/>, u'consectetur...'] 

result.get_text(): 
Lorem ipsumdolor sit amet,consectetur... 

After replacing all the 'None' with ' ': 
Lorem ipsum dolor sit amet, consectetur... 

यह शॉन बहुत कॉम्पैक्ट समाधान से ज्यादा विस्तृत है - लेकिन जब से मैं ने कहा था कि मैं पैदा करेगा और लाइनों के साथ एक समाधान का परीक्षण करें जो मैंने इंगित किया था जब मैं कर सकता था, मैंने अपने वादे का पालन करने का फैसला किया। आप थोड़ा बेहतर देख सकते हैं कि यहाँ पर जा रहा है - <br/>result.contents टपल में अपनी ही तत्व है, लेकिन जब स्ट्रिंग में बदल जाती है "कुछ भी नहीं छोड़ दिया"।

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