Python Wort was zwischen zwei anderen ist im String ausgeben?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

BeautifulSoup erlaubt es dir, nur den Text auszulesen, ohne diese ganzen HTML-Tags aussenrum.

Dafür gibt es das Attribut text

Eventuell reicht es schon, bei deinem aktuellen Codestück (mit dem du obigen String bekommst) einfach ein .text anzuhängen.

Zum Beispiel

soup.find('div', {'class' :'abc'}).text

anstatt

soup.find('div', {'class' :'abc'})

Probier das mal, und wenn es nicht klappt, dann schick mir mal das Code-Stück.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Genau mit soup.find kenne ich mich ja nicht aus.. :( Hier mal der Link zum HTML Code (Ich möchte den Titel herausfiltern und ihn mir ausgeben lassen): eBay (ebaydesc.com)
Wenn der code nicht angezeigt wird einfach rechtsklick -> seitenquelltext anzeigen
Danke dir wirklich das hilft mir sehr!!! :)

PS: Mit titel meine ich in diesem Beispiel, dass mir "Edelrost Garten Feuerschale Pflanzenschale Rost aus Metall mit Konus Blumen 

Handarbeit " ausgegeben wird. :)

0
@DZNRandom

Naja, den String in der Fragestellung hast du ja schon

ich habe einen String mit folgenden Inhalt:
<font rwr="1" size="4" style="font-family:Arial"><font face="Arial"><span style="font-size: 18.6667px;"> Edelrost Garten Feuerschale Pflanzenschale Rost aus Metall mit Konus Blumen </span></font><div><font face="Arial"><span style="font-size: 18.6667px;">

Mithilfe welches Codes bekommst du den denn momentan?

0
@DZNRandom

Da ist ein <div> mit ID „ds_div“, darin ist ein <font>, darin ein weiterer <font>, und darin dann der <span> mit dem Text.

Also

#ds_div > font > font > span

Der Pfeil bedeutet soviel wie „direkter Nachfahre“. Der Hashtag bedeutet „Element mit der ID“.

Ist ein normaler CSS Selektor. Dafür wäre es natürlich nützlich, wenn man die CSS Basics kann. BeautifulSoups select und select_one erlaubt dir, normale CSS Selektoren zu benutzen, um Elemente auszuwählen. Find ich beiweitem einfacher als find.

0

Das ist doch HTML, somit würde ich auch einen HTML-Parser benutzen.

Da scheint doch BeautifulSoup der richtige Parse zu sein.

Schau dir die Funktion an

soup.get_text()

Doku sagt: The get_text() function retrieves all the text from the HTML document.

Sie liefert nur die reinen Teste aus dem HTML Dokument/Fragment.
Hier wird sie erklärt:

https://stackabuse.com/guide-to-parsing-html-with-beautifulsoup-in-python/

Viel Erfolg!

Woher ich das weiß:Recherche

So habe ich ja die html ausgabe bekommen ;) steht auch da. Danke trotzdem! Möchte ja nur den teil rausbekommen. Da ist ja noch mehr text in der gesamten html

0

Python hat eine eingebaute Funktion, die Präfixe und Suffixe entfernt.

Da du erwähnt hast, dass die Text-Teile um deinen eigentlichen Text immer gleich bleiben, daher solltest du diese Funktionen verwenden.

string = '<prefixBeispiel>text<suffixBeispiel>'
output = string.removeprefix("<prefixBeispiel>").removesuffix("<suffixBeispiel>")

Das "<prefixBeispiel>" und "<suffixBeispiel>" musst du natürlich deinen Wünschen entsprechend verändern.

Woher ich das weiß:Hobby

Du könntest RegEx nehmen, oder einfach split:

text = html.split(';">')[1].split('<')[0];

Danach steht dein gewünschter Text in der Variablen "text".

Gut, reguläre Ausdrücke mögen eleganter sein, brauchen aber einen zusätzlichen Import und sind auch nicht kürzer, eher im Gegenteil. :)

Woher ich das weiß:Berufserfahrung

    text1223 = textv0.split(';">')[1].split('<')[0];  

    print(text1223)

Gibt leider kein output :(

0