2016-11-12 3 views
1

Ich versuche fron dieser Teil Antwort zu erhalten:BeautifulSoup conten zu erhalten, nachdem next_silbling

<div class="beschreibung"> 
<!-- Jahr --> 
<strong class="main">Jahr:</strong> 
2008<br/> 
<!-- Jahr Ende --> 
<!-- Genre --> 
<strong class="main">Genre:</strong> 
Action | Krimi | Drama<br/> 
<!-- Genre Ende --> 
<!-- Sprache --> 
<strong class="main">Sprache:</strong> 
Deutsch DTS-HD | Englisch DTS-HD<br/> 
<!-- Sprache Ende --> 
<!-- Länge --> 
<strong class="main">Laufzeit:</strong> 
90 Minuten<br/> 
<!-- Länge Ende --> 

so versuchte ich wie folgt:

for details in soup_.find_all("div", {"class" : "beschreibung"}): 
    info = {details.text.rstrip(':'): details.next_sibling.strip() for s in details.find_all("strong")} 
    print (repr(info)) 

Ich erhalte die respose:

{u"\n\nJahr: \r\n2010\n\n\nGenre: \r\nThriller | Mystery\n\n\nSprache: \r\nDeutsch DTS\n\n\nLaufzeit: \r\n76 Minuten\n\n": u''} 

aber Wie bekomme ich jetzt den richtigen Inhalt für "Jahr", "Sprache" etc ...

Antwort

2

Haben Sie so etwas wie dies bedeuten:

from bs4 import BeautifulSoup 
content = """ 
<div class="beschreibung"> 
<!-- Jahr --> 
<strong class="main">Jahr:</strong> 
2008<br/> 
<!-- Jahr Ende --> 
<!-- Genre --> 
<strong class="main">Genre:</strong> 
Action | Krimi | Drama<br/> 
<!-- Genre Ende --> 
<!-- Sprache --> 
<strong class="main">Sprache:</strong> 
Deutsch DTS-HD | Englisch DTS-HD<br/> 
<!-- Sprache Ende --> 
<!-- Lange --> 
<strong class="main">Laufzeit:</strong> 
90 Minuten<br/> 
<!-- Lange Ende --> 
</div> 
""" 
soup = BeautifulSoup(content, "html.parser") 
info = {} 
for details in soup.find_all("div", {"class" : "beschreibung"}): 
    for strong in details.find_all('strong'): 
     info[strong.text.strip(':')] = strong.next_sibling.strip('\n') 
    print info 

Dieser Code in der folgenden Ausgabe führen:

{u'Genre': u'Action | Krimi | Drama', u'Jahr': u'2008', u'Laufzeit': u'90 Minuten', u'Sprache': u'Deut│ 
sch DTS-HD | Englisch DTS-HD'} 
+0

aber wie zu handhaben, wenn somthing wie ' Größe: 16: 9
'ist im Inhalt. Weil es immer zeigt ** u'Gr \ xf6 \ xdfe ': u'16: 9' ** – user294015

+0

Sie können decodiert, um Unicode-Inhalt während Anfragen lib. requests.content –

+0

das sind meine Anforderungen: 'req_page = requests.get (hda_url) .text', aber ich weiß wirklich nicht, wie man zu Unicode dekodiert ... – user294015

0
from bs4 import BeautifulSoup 
content = """ 
<div class="beschreibung"> 
<!-- Jahr --> 
<strong class="main">Jahr:</strong> 
2008<br/> 
<!-- Jahr Ende --> 
<!-- Genre --> 
<strong class="main">Genre:</strong> 
Action | Krimi | Drama<br/> 
<!-- Genre Ende --> 
<!-- Sprache --> 
<strong class="main">Sprache:</strong> 
Deutsch DTS-HD | Englisch DTS-HD<br/> 
<!-- Sprache Ende --> 
<!-- Lange --> 
<strong class="main">Laufzeit:</strong> 
90 Minuten<br/> 
<!-- Lange Ende --> 
</div> 
""" 
soup = BeautifulSoup(content, "lxml") 

{i.text.rstrip(':'):i.next_sibling.strip() for i in soup.find_all('strong')} 

out_put:

{'Genre': 'Action | Krimi | Drama', 
'Jahr': '2008', 
'Laufzeit': '90 Minuten', 
'Sprache': 'Deutsch DTS-HD | Englisch DTS-HD'} 
Verwandte Themen