Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lister les pages d'un site depuis le web?

5 réponses
Avatar
Roger Bouteiller
Bonjour a tous!

Je me demandais si quelqun aurait il une idee sur la possibilite et le
moyen, dans une console debian, de lister dans un fichier texte tous les
liens d'un site?

Non pas d'aspirer le site, juste de faire un listing de tous les liens sur
ce site la, pour ensuite pouvoir retravailler cette liste.

Mon but serait de faire un truc type 'listing' des liens de mon site,
mais en passant par le net et le serveur web et non pas juste en listant
tous le fichiers des repertoires au niveau local.

Si quelqun a une idee de script ou d'apt-get qui permettrait de faire ca,
(et qui se limiterais a mon domaine, je veux pas faire un plan de tout le
net ;)) je suis prenneur!

Merci!


Roger


--
Roger Bouteiller





--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

5 réponses

Avatar
steve
Le Jeudi, 9 Février 2006 11.01, Roger Bouteiller a écrit :
Bonjour a tous!



Bonjour,

Je me demandais si quelqun aurait il une idee sur la possibilite et le
moyen, dans une console debian, de lister dans un fichier texte tous les
liens d'un site?



un début de réponse :

grep "<a href" fichier.html > lesliens.txt

avec un peu de ménage après.

Mais il doit y avoir d'autres méthodes. Il me semble me rappeler que Fire fox
possède une extension qui fait cela, mais je ne me rappelle pas de son no m.

Non pas d'aspirer le site, juste de faire un listing de tous les liens sur
ce site la, pour ensuite pouvoir retravailler cette liste.

Mon but serait de faire un truc type 'listing' des liens de mon site,
mais en passant par le net et le serveur web et non pas juste en listant
tous le fichiers des repertoires au niveau local.

Si quelqun a une idee de script ou d'apt-get qui permettrait de faire ca,
(et qui se limiterais a mon domaine, je veux pas faire un plan de tout le
net ;)) je suis prenneur!

Merci!


Roger



Bonne journée


--
Roger Bouteiller



--
steve
jabber :
Avatar
Jacques L'helgoualc'h
Roger Bouteiller a écrit, jeudi 9 février 2006, à 11:01 :
Bonjour a tous!



bonjour,

Je me demandais si quelqun aurait il une idee sur la possibilite et le
moyen, dans une console debian, de lister dans un fichier texte tous les
liens d'un site?



wget et sed ?

Non pas d'aspirer le site, juste de faire un listing de tous les liens sur
ce site la, pour ensuite pouvoir retravailler cette liste.



$ wget -m -b --delete-after http://mon.site
Poursuite à l'arrière plan, pid 3123.
La sortie sera écrite vers « wget-log ».

... et cette sortie n'est pas trop difficile à analyser. Si tu préfères
utiliser Perl, « require HTML::LinkExtor;  » peut être utile.
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Jeudi 9 février 2006, 11:35:42 CET, steve a écrit :

Le Jeudi, 9 Février 2006 11.01, Roger Bouteiller a écrit :
> Bonjour a tous!

Bonjour,



'jour,

> Je me demandais si quelqun aurait il une idee sur la possibilite et le
> moyen, dans une console debian, de lister dans un fichier texte tous
> les liens d'un site?

un début de réponse :

grep "<a href" fichier.html > lesliens.txt

avec un peu de ménage après.



Marchera pas : le href peut ne pas être sur la même ligne que le <a
Une recherche de "href" seulement serait plus large.

En tout cas, il faut le programmer pour ne rien rater si on veut que cela
soit réutilisable et complet. Un petit script pourrait aller si on est
sûr que les href n'apparaissent pas ailleurs que dans une ancre active
(p.ex. dans un exemple de code ou une partie commentée).

--
Sylvain Sauvage
Avatar
Jean-Damien Durand
--Boundary-00=_Td06DmcOvCNx5L2
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Thursday, 9 February 2006 13:14, Sylvain Sauvage wrote:
> un début de réponse :
>
> grep "<a href" fichier.html > lesliens.txt
>
> avec un peu de ménage après.

Marchera pas : le href peut ne pas être sur la même ligne que le <a
Une recherche de "href" seulement serait plus large.

En tout cas, il faut le programmer pour ne rien rater si on veut que cela
soit réutilisable et complet. Un petit script pourrait aller si on est
sûr que les href n'apparaissent pas ailleurs que dans une ancre active
(p.ex. dans un exemple de code ou une partie commentée).




Un example a la va-vite, mais vraiment vite alors, i.e. sale et issu de cop ier/coller.
D'autres pourront poster un truc similaire en (tellement) d'autres language s.
C'est /juste/ pour donner idee de comment ca peut se faire, sans pretention aucune.
A+, JD.

--Boundary-00=_Td06DmcOvCNx5L2
Content-Type: application/x-perl;
name="hrefs.pl"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="hrefs.pl"

#!/bin/perl

use strict; ## Strict coding
use diagnostics; ## Verbose messages
use LWP::Simple; ## Easy fetch the web
use HTML::Parser; ## To get list of links on a web page

if (! @ARGV) {
print STDERR "Usage: %0 urlnnWill list all links of given urln";
exit 1;
}

# get url
my $url = shift;
my $listing = get($url);
if (!defined($listing)) {
print STDERR "Cannot get $urln";
exit 1;
}

# Init parser
my $p = HTML::Parser->new(api_version => 3,
start_h => [&start_handler, "self,tagname,attr"],
report_tags => [qw(a)],
);

# Do parsing
$p->parse($listing) || die $!;
$p->eof;

# Finished
exit 0;

sub start_handler {
my($self, $tag, $attr) = @_;
return unless $tag eq "a";
return unless exists $attr->{href};
# If you want the link uncomment the following
print myabs($attr->{href},$url) . "n";
$self->handler(text => [], '@{dtext}' );
$self->handler(end => &end_handler, "self,tagname");
}

sub end_handler {
my($self, $tag) = @_;
my $text = join("", @{$self->handler("text")});
$text =~ s/^s+//;
$text =~ s/s+$//;
$text =~ s/s+/ /g;
# If you want the text uncomment the following
# print "$textn";

$self->handler("text", undef);
$self->handler("start", &start_handler);
$self->handler("end", undef);
}

# -----------------------------------------------------------------
#
# Subroutine : myabs
#
# Purpose : Return an absolute URL
# Input : link
# base
#
# Comment : This is a wrapper arounf URI::URL or URI depending on
# libwww version.
# -----------------------------------------------------------------
sub myabs {
#
## Depending of libwww version: use URI::URL or URI or do nothing...
#
my ($link,$base) = (@_);
my $linkq = quotemeta($link);
my $baseq = quotemeta($base);
my $newlink = eval "use URI::URL; url("$linkq","$baseq")->abs->as_string";
if ($@) {
$newlink = eval "use URI; URI->new->new_abs("$linkq","$baseq")";
if ($@) {
$newlink = ($link =~ /^[w]:/// ? $link : (substr($base,-1,1) eq '/' ? "$base$link" : "$base/$link"));
}
}
return($newlink);
}

--Boundary-00=_Td06DmcOvCNx5L2--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
manioul
Le jeudi 09 février 2006 à 11:01 +0100, Roger Bouteiller a écrit :
Bonjour a tous!


Coucou!

Du perl, avec les modules HTML::TreeBuilder et HTML::Element
http://search.cpan.org/~petdance/HTML-Tree-3.1901/lib/HTML/TreeBuilder.pm
http://search.cpan.org/~petdance/HTML-Tree-3.1901/lib/HTML/Element.pm

++ ;)

Je me demandais si quelqun aurait il une idee sur la possibilite et le
moyen, dans une console debian, de lister dans un fichier texte tous les
liens d'un site?

Non pas d'aspirer le site, juste de faire un listing de tous les liens sur
ce site la, pour ensuite pouvoir retravailler cette liste.

Mon but serait de faire un truc type 'listing' des liens de mon site,
mais en passant par le net et le serveur web et non pas juste en listant
tous le fichiers des repertoires au niveau local.

Si quelqun a une idee de script ou d'apt-get qui permettrait de faire ca,
(et qui se limiterais a mon domaine, je veux pas faire un plan de tout le
net ;)) je suis prenneur!

Merci!


Roger


--
Roger Bouteiller









--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact