• [^] # Re: Ma méthode

    Posté par (site web personnel, Mastodon) . En réponse au journal Livre O'Reilly en téléchargement gratuit légal. Évalué à 5. Dernière modification le 11 février 2018 à 18:26.

    Pour obtenir le contenu de toutes les pages qui contiennent des liens .csp sans tout aspirer (ni utiliser un service tiers pour ce faire) je fais ça:

    curl -s 'http://www.oreilly.com/free/reports.html' \
    | grep 'class="btn see-more"' \
    | sed -e 's/^.*href="\([^"]*\)".*$/1円/' \
    | curl -s $(cat) \
    | [process]

    Remplacer curl -s par wget -q -O- pour n’utiliser que wget, et à la place de [process] ajouter un savant mélange de grep et de sed pour nettoyer/reconstruire les url (il est certainement possible de n’utiliser que sed mais j’ai pas cherché), l’astuce du :

    ... | curl -s $(cat)

    fait qu’on peut se passer de boucle for, de même à la fin on peut faire [process] | wget -xc $(cat). ;-)

    Certains l’auront noté, il faut faire attention parce que certaines url sont en .csp?quelquechose, et que d’autres commencent par // au lieu de http://.

    Note : le sort | uniq peut être remplacé par un sort -u. Perso je n’ai pas essayé de savoir s’il y avait des url en doublon avec ma méthode, mais l’option -c de wget me garantie de ne pas retélécharger ce qui est déjà complètement téléchargé (mais ça n’économise pas la requête) et de reprendre en cours de route s’il y a eu une quelconque interruption quelque part dans le réseau. [Edit: il y a des doublons, oui]

    ce commentaire est sous licence cc by 4 et précédentes