Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/wp-includes/post-template.php on line 284

Extraindo links

por Laercio da Silva Motta – twitter: @laerciomasala

   Criei uma nova categoria chamada “Rapidinhas”, aqui vou postar alguns macetes(na maioria das vezes com ShellScript) que podem ajudar no dia-a-dia. Como primeiro post vou começar mostrando como extrair links de uma página, para isso tenho duas alternativas, vou mostrar agora como usar:

   Digamos que eu tenho um site qualquer, vou pegar esse: http://www.baixandoanimes.com/, esse site contém vários links para downloads, por exemplo o pica-pau: http://www.baixandoanimes.com/picapau.htm, cada um sendo um episódio. Normalmente um usuário que ainda não conhece os comandos iria clicar um por um para baixar, mais imagina que tivesse 300 links? Veja:

   Agora com o shell do Linux(ou até mesmo um Cygwin) você pode usar alguns comandos para extrair esses links da página:

1. Vamos baixar o arquivo e nomeá-lo como “lista”:

# wget -c http://www.baixandoanimes.com/picapau.htm -O lista

2. Depois de baixado vamos selecionar o que queremos, no caso eu já estou ciente que os links de download são do rapidshare, então:

# sed 's/\"/\n/g' lista | grep rapidshare

Calma, calma, eu explico:

Estou usando 2 comandos na linha, o sed e o grep

sed: Eu estou substituindo(s) tudo que é “(aspas) por \n(linha nova), colocando em outra linha o link do site – grep: Seleciono somente as linhas que contem rapidshare e nada mais.

   Sim, um pouco complicado, mas nem tanto, vamos para mais outra:

grep -Eo 'http://rapidshare.com[A-Za-z0-9/._]+' lista

   Agora eu uso somente o grep com as opções -E e -o, indica que eu vou usar Expressão Regular Estendida e apenas a parte da linha correspondente ao PADRÃO respectivamente. Como eu já sei(ou pelo menos espero que seja) o começo do link com http://rapidshare.com(+ algo), então eu adicionei o “mais algo” como sendo uma expressão regular, que vai “casar” com:

– A-Z -> letras de A a Z (maiúsculas)
– a-z -> letras de A a Z (minusculas)
– 0-9 -> números de 0 a 9(0,1,2,3,4,5,6,7,8,9)
– /._ -> Barra, ponto e underline

   Então, tudo que tiver entre colchetes [], ele vai me trazer, no caso isso vai me trazer o resto do link(resumindo a conversa) e somente os links. O resto é excluído, pois estou usando a opção -o com o grep.

   Agora é a coisa que professores adoram fazer, existe uma opção mais simples, com o lynx, basicamente eu usaria isso:

lynx --dump http://www.baixandoanimes.com/picapau.htm

  Ele já iria me trazer a lista de todos os links disponíveis na página. Sim, eu sei, você deve estar se perguntando, então para que as outras opções? E eu digo: apenas para conhecimento, é sempre bom saber. Mas voltando ao assunto, esse comando me mostra todos os links, como eu já havia dito, porém, ele vem com números no começo, e isso pode ser facilmente removido(com a força do Shell, claro), como eu quero somente os links do rapidshare então vou usar o awk para extrair somente os links, para isso adiciono um | (pipe) e o comando do awk, assim vou matar as duas em uma só: somente os links rapidshare e retirar os números:

lynx --dump http://www.baixandoanimes.com/picapau.htm | awk '/rapidshare/ {print $2}'

   Basicamente eu adicionei o que esta sublinhado, se eu quisesse pegar todos os links sem exceção é só tirar o /rapidshare/ e deixar o print:

lynx --dump http://www.baixandoanimes.com/picapau.htm | awk '{print $2}'

   Bem, é isso. Sugestões? Críticas? Comentem ae.. Até a próxima!

Link permanente para este artigo: http://laerciomotta.com/2011/07/29/extraindo-links/

6 comentários

2 menções

Pular para o formulário de comentário

    • Rafael Castro (@RafaelC457ro) em julho 29, 2011 às 11:31 pm
    • Responder

    Isso teria sido muito util um tempo atras pra mim..tive aprender tudo isso na marra mesmo…mas ate que foi bom pra meu aprendizado…lembrando que se o link aponta para servidor rapidshare ou megaupload pode usar o plowshare um gerencioador de download via linha de comando que reconhece captcha e espera os seguandos necessarios…

    1. Ou ainda o JDownloader.. não conhecia esse Plowshare, mais vou dar uma olhada.. Valeuuu =)

    • Francklin em julho 30, 2011 às 11:11 am
    • Responder

    Me salvou mais uma vez!

    • asghan em julho 30, 2011 às 1:35 pm
    • Responder

    Boa a dica e gostei tbm do site usado para teste !

    • henrique em julho 31, 2011 às 12:19 pm
    • Responder

    nossa gostei muito, depois vou testar aqui no meu ubuntu, sou iniciante ainda não conheço nada ainda do terminal quase.. mas espero aprender bastante aqui!

  1. Thanks for the post 🙂

  1. […] não conhece os comandos, iria clicar um por um para baixar, mais imagina que tivesse 300 links? Veja como extrair os links, via terminal! Compartilhe pelas redes sociais:PrintDiggdel.icio.usFacebookTwitterGoogle […]

  2. […] Extraindo links […]

Deixe uma resposta para asghan Cancelar resposta

Seu e-mail não será publicado.