Thread URL aus HTML extrahieren (9 answers)
Opened by Salway at 2014-08-01 15:54

Linuxer
 2014-08-01 21:49
#176669 #176669
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
1. Du legst die gefundenen URLs in einem Hash als Schlüssel ab. Ein Hash ist unsortiert, die Schlüssel kommen da in einer beliebigen Reihenfolge wieder raus; nicht unbedingt in der, in der sie in den Hash gekommen sind.

2. Du sortierst die URLs selber; wie soll da denn die originale Reihenfolge beibehalten werden können?

Was kann URI::Find also dafür, dass Du die gefundenen URLs in einen unsortierten Hash ablegst und anschließend die Treffer selber noch umsortierst?

Lege die gefundenen URLs in einen Array; und nur, wenn sie nicht schon hereingelegt wurden.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl
use strict;
use warnings;

use feature         qw( say );
use List::Util      qw( first );
use URI::Find;
use LWP::Simple;


# Container fuer URIs
my @urls;


# Sub Routines
######################################

{
    my %seen;

    sub callback {
        # $uri_url ist ein Objekt der Klasse URI::URL
        my ( $uri_url, $uri ) = @_;

        # URIs nur einmal hinzufügen
        push @urls, $uri        if !$seen{$uri}++;
    }

    sub reset_seen {
        %seen = ();
    }
}

# Main Program
######################################

# http://www.amazon.com/gp/product/B00CMTF8XQ
my $url = shift @ARGV;

die "No URL specified on command line.\n"
    unless defined $url && length $url;

my $html = get $url;

my $finder = URI::Find->new( \&callback );

my $found = $finder->find( \$html );

# gebe erste gefundene URL aus
say first { /1500_.jpg$/ } @urls;
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread URL aus HTML extrahieren