Thread Webseite bestimmte Werte auslesen (12 answers)
Opened by Willi9974 at 2020-03-07 09:08

haj
 2020-03-07 11:24
#191445 #191445
User since
2015-01-07
569 Artikel
BenutzerIn

user image
Das Auslesen von Informationen aus Webseiten ist ... nun ja, ein recht zerbrechliches Verfahren. Webseiten sind für Browser bestimmt, und je nach Lust und Laune des Anbieters kann sich die beliebig verändern, ohne dass Browser-Nutzer davon viel mitbekommen. Das ist also eher eine Notlösung, und wenn's sein muss, ist Perl auch eine gut geeignete Sprache für so etwas.

Man kann HTML-Seiten schreiben, die gut zum "Scraping" geeignet sind, aber diese sind es nicht (beim dritten Link sind schon Euro- und Cent-Werte in getrennten HTML-Elementen).

In solchen Fällen gibt es aber oft auch maschinenlesbaren Output vom selben Anbieter. Beim ersten bin ich fündig geworden: Da gibt es ein API (siehe https://www.blockchain.com/api und https://www.blockchain.com/api/blockchain_api), und für Deine Adresse bekommst Du die Daten als JSON-Struktur unter
https://blockchain.info/rawaddr/12dRugNcdxK39288Nj....

Da springt einem die Struktur auf oberster Ebene schon direkt mit den von Dir gesuchten Werten ins Gesicht:

Code: (dl )
1
2
3
4
5
6
hash160:	"11dbe48cc6b617f9c6adaf4d9ed5f625b1c7cb59"
address "12dRugNcdxK39288NjcDV4GX7rMsKCGn6B"
n_tx: 2029
total_received: 2468449570426
total_sent: 2426599405906
final_balance: 41850164520


In Perl kann man solche Strukturen mit CPAN:JSON einlesen und bekommt dann die gesuchten Werte in einen Hash. Und weil der Codeschnipsel hier wirklich recht einfach ist:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use 5.020;
use strict;
use warnings;
use LWP::Simple;
use JSON;

my $address = '12dRugNcdxK39288NjcDV4GX7rMsKCGn6B';
my $content = get("https://blockchain.info/rawaddr/$address");
defined $content  or  die "Falsche Adresse: '$address'";
my $result = decode_json $content;

say "Anzahl Transaktionen: $result->{n_tx}";
say "Insgesamt erhalten:   ", $result->{total_received}/1E8;
say "Saldo:                ", $result->{final_balance}/1E8;


Ausgabe:
Code: (dl )
1
2
3
Anzahl Transaktionen: 2029
Insgesamt erhalten: 24684.49570426
Saldo: 418.5016452

View full thread Webseite bestimmte Werte auslesen