Seite 1 von 1

String innerhalb Tags zerlegen, Teilstring extrahieren

Verfasst: Samstag 22. Oktober 2022, 18:08
von ReiMae
Hallo,

ich möchte mit Beautiful Soup innerhalb einer Zeichenkette einen Teilstring "herausholen".

Code: Alles auswählen

%2FB08CL2GHL5%3F
Zwischen %2F und %3F soll "B08CL2GHL5" ausgeschnitten werden, es ist eine ASIN.

Als Anfänger fehlt mir ein Ansatz, wie ich das bewerkstelligen könnten. Hätte jemand eine klitzekleine Idee für mich?

Re: String innerhalb Tags zerlegen, Teilstring extrahieren

Verfasst: Samstag 22. Oktober 2022, 19:14
von darktrym
Slicing aber ob vorher kodieren willst bleibt dir überlassen.

Re: String innerhalb Tags zerlegen, Teilstring extrahieren

Verfasst: Samstag 22. Oktober 2022, 19:21
von Sirius3
Da fehlt einiges an Kontext. Als erstes mußt Du das richtige <a>-Tag finden, dann die URL im href-Attribut parsen und mit entsprechenden Mitteln auseinandernehmen, um dann den Teil, der diese ASIN enthält wiederum zu parsen.

Re: String innerhalb Tags zerlegen, Teilstring extrahieren

Verfasst: Sonntag 23. Oktober 2022, 10:21
von ReiMae
Sirius3 hat geschrieben: Samstag 22. Oktober 2022, 19:21 Da fehlt einiges an Kontext. Als erstes mußt Du das richtige <a>-Tag finden, dann die URL im href-Attribut parsen und mit entsprechenden Mitteln auseinandernehmen, um dann den Teil, der diese ASIN enthält wiederum zu parsen.
Der vollständige Tag:

Code: Alles auswählen

<img class="mid gh_flag offer__merchant-flag"
src="//gzhls.at/b/flags/de.svg"
width="16"
height="16"
alt="[DE]"><a
rel="nofollow noopener"
target="_blank"
onclick="
window._gh.track('Offers', 'offer_click_19', '/OUTSHOP/teleropa | amazon.de');
if(window._paq) {
window._paq.push(['addEcommerceItem',
'2374501',
'Xiaomi Pro 2 Elektro\u002dRoller 20km/h',
'Sport \u0026 Freizeit/Rollsport/Elektro\u002dRollsport',
699.99,
1
]);
window._paq.push(['trackEcommerceOrder',
'2374501teleropa | amazon.de' + new Date().getTime(),
699.99,
]);
}
"
href="/redir.cgi?h=a11bpzirz15gb0-am-de&amp;loc=https%3A%2F%2Fwww.amazon.de%2Fdp%2F[color=#FF0000]B08CL2GHL5[/color]%3FlinkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26smid%3DA11BPZIRZ15GB0%26creativeASIN%3D[color=#FF0000]B08CL2GHL5[/color]%26tag%3Dgeizhals10-21&amp;ghaID=2374501&amp;key=9519bd2695d1d17548a9f2f68d3931c4"
class="gh_offerlist__offerurl ntd merchant"
data-merchant-name="teleropa | amazon.de">
Dieselbe ASIN kommt mehrmals vor, ist nicht an das eine DIV gebunden.

Ich müsste einen Teilstring innerhalb des TAG zwischen

Code: Alles auswählen

%2Fdp%2F   .....  %3F
Herausholen.

Gibt es in BS4 eine Funktion dafür? Oder geht es nur über RegEx?

Grüße, Reiner



Wenn es bei Python keine einfache Funktion zum Zerlegen von Strings gibt, würde ich es per RegEx lösen

Re: String innerhalb Tags zerlegen, Teilstring extrahieren

Verfasst: Sonntag 23. Oktober 2022, 10:32
von Sirius3
Eine einfache Funktion gibt es nicht, und mit Regex popelst Du dir irgendeinen String raus, der nicht unbedingt dem gewünschten entspricht.
Die Schritte hatten ich dir ja schon erklärt.
1. Href-Attribut extrahieren.
2. Url zum ersten Mal parsen und entsprechenden Parameter extrahieren.
3. Diese neue URL zum zweiten Mal parsen.