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:
hash160: "11dbe48cc6b617f9c6adaf4d9ed5f625b1c7cb59"
address "12dRugNcdxK39288NjcDV4GX7rMsKCGn6B"
n_tx: 2029
total_received: 2468449570426
total_sent: 2426599405906
final_balance: 41850164520
In Perl kann man solche Strukturen mit
JSON einlesen und bekommt dann die gesuchten Werte in einen Hash. Und weil der Codeschnipsel hier wirklich recht einfach ist:
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:
Anzahl Transaktionen: 2029
Insgesamt erhalten: 24684.49570426
Saldo: 418.5016452