Readers: 17
1 2 3 4 5 6 7 8
use URI::Split qw(uri_split); my $uri = 'http://example.net/?foo=bar&baz=fu'; my ($scheme, $auth, $path, $query, $frag) = uri_split($uri); my @sorted_query = sort split /&/, $query; $query = join '&', @sorted_query; my $new_uri_string = $scheme . $auth . $path . $query . $frag;
2020-01-28T14:59:17 styx-ccDen Querystring kannst du doch per Hand splitten.
1 2
$q = CGI->new( 'foo=1;bar=2;bar=3;bar=4' ); $q = CGI->new( 'foo=1&bar=2&bar=3&bar=4' );
2020-01-28T13:01:49 mikaPS: Ich habe auch Hyperlinks mit unterschiedlicher Query, die aber die gleiche Seite ausliefern (zumindest Augenscheinlich). Solche Dopplungen zu erkennen, wäre schön ist aber glaube ich einfach nicht richtig, weil so Information verlorengehen dann, wenn die erste Annahme falsch ist.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# application/x-www-form-urlencoded sub qparse{ my $rawdata = shift; # querystring my %param = (); my @pie = split /[;&]/, $rawdata; foreach my $p(@pie){ my ($pname, $val) = split(/=/, $p, 2); next unless $pname; next unless defined $val; $val =~ s/\+/ /g; $val =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; push @{$param{$pname}}, $val; # key => [val,val..] } return \%param; }
<link rel="canonical" href="https://www.stern.de/panorama/drei-weitere-coronavirus-faelle-in-bayern-bestaetigt-9111748.html"/>
Link: <https://rolfrost.de/>; rel="canonical"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use strict;
use warnings;
use LWP;
use Data::Dumper;
my $browser = LWP::UserAgent->new();
my $site = $browser->get('http://de.wikibooks.org');
my $code = $site->decoded_content();
use XML::LibXML;
my $dom = XML::LibXML->load_xml(string => $code);
foreach my $node ($dom->findnodes('//link[@rel="canonical"]/@href')) {
print $node->to_literal(), " # canonical LibXML\n";
}
use XML::XPath;
my $xp = XML::XPath->new(xml => $code);
foreach my $node ($xp->findnodes('//link[@rel="canonical"]')) {
print $node->getAttribute('href'), " # canonical XPath\n";
}
1 2 3
use Web::Query::LibXML 'wq'; print wq('http://de.wikibooks.org')->find('link[rel="canonical"]')->attr('href'); # https://de.wikibooks.org/wiki/Hauptseite
1
2
3
4
5
my $dom = XML::LibXML->load_html(
string => $code,
recover => 1, # try to recover parse errors and carry on to produce a DOM
suppress_errors => 1, # turn off the error output
);
2020-02-10T05:45:43 rostiDen Link-Header abzufragen ist deutlich einfacher als HTML zu parsen.