String innerhalb Tags zerlegen, Teilstring extrahieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ReiMae
User
Beiträge: 2
Registriert: Freitag 27. Mai 2022, 15:05

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?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Slicing aber ob vorher kodieren willst bleibt dir überlassen.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
ReiMae
User
Beiträge: 2
Registriert: Freitag 27. Mai 2022, 15:05

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
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Antworten