Webscraping JavaScript ReplaceWith Ids Dokument

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
2fersen
User
Beiträge: 15
Registriert: Montag 19. November 2018, 14:24

Hallo Leute,
ich versuche auf Willhaben.at mithilfe von Python Daten auszulesen, jedoch versuche ich gerade mein Glück mit Mechanize, jedoch bekomme ich leider nur JavaScript ausgepspuckt wenn ich auf den Produkttitel zugreifen will.


Ergebniss:

Code: Alles auswählen

var f843703e957d2473ea4448f5d973359a0 = function(value){return base64UTF8Codec.decode(arguments[0])};
replaceWith(document.getElementById('0d1653de-f324-42bd-bea5-ce5379f43f06'), f843703e957d2473ea4448f5d973359a0('CiAgICAgICAgICAgIDxoMSBpdGVtcHJvcD0nbmFtZScKICAgICAgICAgICAgICAgIGNsYXNzPSJoZWFkZXIgY1hlbnNlUGFyc2UiPk1pZCBjZW50dXJ5IE5hY2h0dGlzY2hsYW1wZTwvaDE+CiAgICAgICAg'));
Weiß jemand wie ich auf die Daten zugreife, welche eigentlich die in die Platzhalter eingesetzt werden?

Würde mich freuen wenn mir jemand helfen könnte.
LG
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Der Funktionsname verrät ja im Grunde was gemacht werden muss:

Code: Alles auswählen

In [73]: a = b'CiAgICAgICAgICAgIDxoMSBpdGVtcHJvcD0nbmFtZScKICAgICAgICAgICAgICAgI
    ...: GNsYXNzPSJoZWFkZXIgY1hlbnNlUGFyc2UiPk1pZCBjZW50dXJ5IE5hY2h0dGlzY2hsYW1w
    ...: ZTwvaDE+CiAgICAgICAg'

In [74]: print(base64.decodebytes(a).decode('utf8'))

            <h1 itemprop='name'
                class="header cXenseParse">Mid century Nachttischlampe</h1>
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
2fersen
User
Beiträge: 15
Registriert: Montag 19. November 2018, 14:24

Oh stimmt, ich hab nur das replace gesehen und dachte das es durch irgend eine ID ersetzt wird.

Wie bekomme ich jetzt von dieser Zeile den benötigten String um ihn zu decoden, oder kann ich vielleicht gleich einfach diesen Javascript in Python ausführen?

Code: Alles auswählen

<script>
var f6b139c13b6184200af31c4406cf60cf7 = function(value){return base64UTF8Codec.decode(arguments[0])};
replaceWith(document.getElementById('b8a99a75-88f4-4174-b4c6-402305dcc338'), f6b139c13b6184200af31c4406cf60cf7('CiAgICAgICAgICAgIDxoMSBpdGVtcHJvcD0nbmFtZScKICAgICAgICAgICAgICAgIGNsYXNzPSJoZWFkZXIgY1hlbnNlUGFyc2UiPmlrZWEgSGVtbmVzIFNjaHJlaWJ0aXNjaCAoZ2ViZWl6dCk8L2gxPgogICAgICAgIA=='));
</script>
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Wieso willst du denn irgendwelches Javascript ausführen? __blackjack__ hat dir soch gezeigt, was du tun musst.

Den String dort rauszulösen, funktioniert über reguläre Aussrücke oder String-Operationen. Das sind Python-Grundlagen und es geht ja nach dem Dekodieren noch weiter. Um Operationen auf Zeichenketten kommst du nicht herum.

Was hast du denn schon versucht (zeige Code) und woran scheitert es?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@sparrow: nach dem Dekodieren würde man aber wieder einen HTML-Parser nehmen.
Antworten