OK kryptische Überschrift kurz erklärt: Lerne gerade Basiswissen zum Webscraping mit Beautifulsoup sowie Requests. Tue mich allerdings schwer damit den Inhalt eines "p" Tags auszulesen wenn mehrere hintereinandergeschaltet sind auf gleicher Ebene ohne spezifischer Bezeichnung.
Möchte den Titel , die Produktbeschreibung sowie den Preis auslesen pro Tuch.
Die url: https://www.madeinpalestine.de/deutsch/palästina-tücher/
So sieht das dann dort aus:
Hier meine "Lösung":
Die Seite definiert die Produktbeschreibung manchmal im ersten, zweiten und manchmal im dritten "p" Tag. Die anderen sind dann leer und erzeugen Leerzeilen daher meine Fragen:
Frage 1: Wie spreche ich direkt nur das 3. "p" Tag an?
Frage 2: Wie spreche ich alle "p" Tags an und verbinde die Textpassagen lasse aber die ganzen leeren "p" Leerzeilen aus bzw formatiere diese automatisch weg?
Vielen Dank für eure Hilfe
Rizzo
Möchte den Titel , die Produktbeschreibung sowie den Preis auslesen pro Tuch.
Die url: https://www.madeinpalestine.de/deutsch/palästina-tücher/
So sieht das dann dort aus:
HTML:
<p style="text-align: right;"></p>
<p style="text-align: right;"></p>
<p style="text-align: right;"><span style="line-height: 19.6px; text-align: left;"></span></p>
<p>
Das klassische Schwarz-weiße Tuch, wie von Arafat getragen wurde.
</p>
Hier meine "Lösung":
Code:
import requests as req
from bs4 import BeautifulSoup as soup
my_url = 'https://www.madeinpalestine.de/deutsch/palästina-tücher/'
page_html = req.get(my_url)
page_soup = soup(page_html.content, "lxml")
containers = page_soup.findAll("div", {"class": "cc-shop-product-desc"})
for container in containers:
try:
name = container.h4.text
print(name)
except:
pass
try:
product_container = container.findAll("div", {"class": "description"})
product_desc = product_container[0].text.strip()
print(product_desc)
except:
pass
try:
preis_container = container.findAll("p", {"itemprop": "price"})
preis = preis_container[0].text.strip()
print(preis)
print("\n")
except:
pass
Die Seite definiert die Produktbeschreibung manchmal im ersten, zweiten und manchmal im dritten "p" Tag. Die anderen sind dann leer und erzeugen Leerzeilen daher meine Fragen:
Frage 1: Wie spreche ich direkt nur das 3. "p" Tag an?
Frage 2: Wie spreche ich alle "p" Tags an und verbinde die Textpassagen lasse aber die ganzen leeren "p" Leerzeilen aus bzw formatiere diese automatisch weg?
Vielen Dank für eure Hilfe
Rizzo