ich eine Perl-Skript erstellt habe HTML :: TABLEEXTRACT zu verwenden, um Daten aus Tabellen auf einer Website zu kratzen.HTML :: TABLEEXTRACT eine HTTPS-Site
Es funktioniert hervorragend, um Tabellendaten für unsichere Sites (dh HTTP-Site) auszugeben, aber wenn ich HTTPS-Sites versuche, funktioniert es nicht (die Tables_report-Zeile druckt nur leer .. es sollte eine Reihe von Tabellendaten drucken).
Wenn ich jedoch den Inhalt dieser HTTPS-Seite nehme und in einer HTML-Datei speichern und dann auf einer ungesicherten HTTP-Site veröffentlichen (und meinen Inhalt so ändern, dass er auf diese HTTP-Seite verweist), funktioniert dieses Skript wie erwartet .
Wer weiß, wie ich das HTTPS arbeiten über bekommen kann?
#!/usr/bin/perl
use lib qw(..);
use HTML::TableExtract;
use LWP::Simple;
use Data::Dumper;
# DOESN'T work:
my $content = get("https://datatables.net/");
# DOES work:
# my $content = get("http://www.w3schools.com/html/html_tables.asp");
my $te = HTML::TableExtract->new();
$te->parse($content);
print $te->tables_report(show_content=>1);
print "\n";
print "End\n";
Die Standorte oben für $ content erwähnt sind nur einige Beispiele .. diese sind nicht wirklich die Seiten, die ich bin zu extrahieren, aber sie arbeiten genauso wie die Seite, die ich zu kratzen wirklich bin versucht.
Eine Option Ich denke, dass ich perl die Seite lokal zuerst herunterladen und daraus extrahieren soll, aber ich möchte lieber nicht, wenn es einen einfacheren Weg gibt (wer hilft, bitte nicht ausgeben jede verrückte Zeit mit einer komplizierten Lösung!).
Danke für die Antwort! Dies ist – ChrisS
Sorry, ich bin neu in StackOverflow und drücken Sie die Eingabetaste zu früh. Das hat fast funktioniert.Ich musste einen Teil in 'my $ ua = LWP :: UserAgent-> new ( ssl_opts => {verify_hostname => 0}, ) ändern;' oder ich würde immer eine Fehlermeldung erhalten, dass die Zertifikatsüberprüfung fehlgeschlagen ist. Ich habe diese Lösung mit Chankey's Parsing kombiniert. Ich werde versuchen, meinen endgültigen Code unten zu posten. – ChrisS
Eigentlich nach dem Lesen, klingt, als wäre es besser zu verwenden 'ssl_opts => {SSL_verify_mode => 'SSL_VERIFY_PEER'},', das ist, was ich stattdessen getan habe. Ich bin mir nicht sicher, ob es überhaupt Sicherheitsprobleme gibt, aber ich bin nicht an der Sicherheit hier interessiert. Ich versuche nur ein paar Statistiken von einer öffentlichen Seite zu holen. – ChrisS