2016-08-20 6 views
1

Ich versuche, den Text aus Inhalten zu bekommen, aber wenn ich versuche, schöne Suppe Funktionen auf die Ergebnisvariable, führt es zu Fehlern.Python BeautifulSoup Extrahieren von Text aus dem Ergebnis

from bs4 import BeautifulSoup as bs 
import requests 

webpage = 'http://www.dictionary.com/browse/coypu' 
r = requests.get(webpage) 
page_text = r.text 

soup = bs(page_text, 'html.parser') 

result = soup.find_all('meta', attrs={'name':'description'}) 

print (result.get['contents']) 

Ich versuche, das Ergebnis zu lesen;

"Coypu-Definition, eine große, südamerikanische, aquatische Nagetier, Myocastor (oder Myopotamus) Coypus, die Pelz Nutria. Mehr sehen."

+0

' result.get ('Inhalt') 'vielleicht? – mic4ael

+0

Sie haben ein Problem in result.get, sollte man result [0] .get ("content") verwenden, Sie verwenden "contents". –

Antwort

1

soup.find_all() gibt eine Liste zurück. Da in Ihrem Fall ist es nur ein Element in der Liste zurückgibt, können Sie tun:

>>> type(result) 
<class 'bs4.element.ResultSet'> 
>>> type(result[0]) 
<class 'bs4.element.ResultSet'> 
>>> result[0].get('content') 
Coypu definition, a large, South American, aquatic rodent, Myocastor (or Myopotamus) coypus, yielding the fur nutria. See more. 
+0

Natürlich, danke für Ihre Hilfe Nehal. – JohnPaul

1

Wenn Sie nur die ersten oder einen einzelnen Tag verwenden wollenzu finden, find_all gibt eine Liste/resultSet:

result = soup.find('meta', attrs={'name':'description'})["contents"] 

Sie können auch einen CSS-Selektor mit select_one verwenden:

result = soup.select_one('meta[name=description]')["contents"] 
0

Sie müssen nicht als nur verwenden findall von finden Sie unter Verwendung von Ausgabe erhalten können gewünschte‘

from bs4 import BeautifulSoup as bs 
import requests 

webpage = 'http://www.dictionary.com/browse/coypu' 
r = requests.get(webpage) 
page_text = r.text 

soup = bs(page_text, 'html.parser') 

result = soup.find('meta', {'name':'description'}) 

print result.get('content') 

es druckt:

Coypu definition, a large, South American, aquatic rodent, Myocastor (or Myopotamus) coypus, yielding the fur nutria. See more. 
+1

War * find * nicht bereits in meiner Antwort enthalten, die ich einen Tag vor deiner hinzugefügt habe? –

+0

Ich habe das verpasst, tut mir leid, als ich in Frage und seinen Code sah und meins schrieb – thebadguy

Verwandte Themen