Python, Beautifulsoup find all

Gast #4547535
Hi,

derzeit suche ich so in einer eingelesenen html
1
My_URL = BeautifulSoup(urlopen("pfad"), "html.parser")
2
                    
3
        
4
result = My_URL.find("span", {"itemprop": "name"}).get_text()

Das klappt eig. auch gut. Jetzt kommt allerdings
1
<span itemprop="name">
 mehrmals vor. Wie kann ich mir die ersten 2 auslesen und nicht nur das 
erste?
Gast
Seb schrieb:
> Wird nicht gehen. get_text gibt es in find_all nicht

Du willst ja auch nicht get_text von allen, sondern nur von den ersten 
Zwei.

Also: find_all, erste zwei wählen, get_text auf's erste, get_text auf's 
zweite anwenden.
Gast
Hi,

also ich habe da jetzt 2 Tage lang herumprobiert, aber ich bekomme es 
nicht hin.


1
My_URL = BeautifulSoup(urlopen("pfad"), "html.parser")                    
2
        
3
result = My_URL.findAll("span", {"itemprop": "name"})
4
print (result)
Dann bekomme ich das hier.
1
<span itemprop="name">Text1</span>, <span itemprop="name">Text2</span>, <span itemprop="name">Text3</span>
1
Aber wie bekomme ich das html in Text?
2
print (result.text)
3

4
AttributeError: 'ResultSet' object has no attribute 'text'
Robin schrieb:
> also ich habe da jetzt 2 Tage lang herumprobiert, aber ich bekomme es
> nicht hin.
>
>
1
> My_URL = BeautifulSoup(urlopen("pfad"), "html.parser")
2
> 
3
> result = My_URL.findAll("span", {"itemprop": "name"})
4
> print (result)
5
>
>
>
1
> Aber wie bekomme ich das html in Text?
2
> print (result.text)
3
> 
4
> AttributeError: 'ResultSet' object has no attribute 'text'
5
>

"result" ist eine Instanz der Klasse "ResultSet", das ist im Prinzip 
eine Liste von Instanzen der Klasse "bs4.element.Tag". Was Du jedoch 
willst, ist
1
results = My_URL.findAll('span')[0:2]   # man beachte das slice am Ende
2
for result in results:
3
    print result.getText()

oder für Fortgeschrittene mit List Comprehension:
1
print [a for a in My_URL.findAll('span')[0:2]]

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.