Seite 1 von 1

Webscraping JavaScript ReplaceWith Ids Dokument

Verfasst: Montag 10. Juni 2019, 22:49
von 2fersen
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

Re: Webscraping JavaScript ReplaceWith Ids Dokument

Verfasst: Dienstag 11. Juni 2019, 08:52
von __blackjack__
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>

Re: Webscraping JavaScript ReplaceWith Ids Dokument

Verfasst: Sonntag 16. Juni 2019, 22:48
von 2fersen
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>

Re: Webscraping JavaScript ReplaceWith Ids Dokument

Verfasst: Montag 17. Juni 2019, 04:56
von sparrow
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?

Re: Webscraping JavaScript ReplaceWith Ids Dokument

Verfasst: Montag 17. Juni 2019, 07:42
von Sirius3
@sparrow: nach dem Dekodieren würde man aber wieder einen HTML-Parser nehmen.