Obtenha links de uma página html

1

Eu tenho um arquivo txt com vários links de arquivos html. Eu preciso acessar cada link neste txt e pegar os links que estão dentro dele e salvá-lo em outro arquivo txt.

Como posso fazer isso no terminal / shell script / python do Linux?

    
por Rafael 30.06.2017 / 20:07

2 respostas

2

Instale lynx e, em seguida:

lynx -listonly -nonumbers -dump input.html > links.txt

Certifique-se de que seu arquivo de entrada tenha uma extensão .html .

Por exemplo:

$ cat test.html
<a href="http://superuser.com">test</a>
http://google.com
$ lynx -listonly -nonumbers -dump test.html
http://superuser.com/

Se, em vez disso, você tiver um arquivo de texto que aponte para arquivos HTML dos quais precisa obter os links, é possível iterar sobre isso:

while read -r file; do
  lynx -listonly -nonumbers -dump "$file" > "${file%.*}.txt
done < input.txt

Isso lerá todas as linhas do arquivo de texto, usará o lynx para extrair os links e os gravará em um arquivo .txt com o mesmo nome de base do arquivo HTML para o qual eles apontam.

    
por 30.06.2017 / 21:08
1

Corte a questão em duas partes.

1. Pegue todas as páginas de um arquivo de texto.

Suponha que não sejam necessários logins ou credenciais para a página de destino.

Execute em uma máquina Linux ou Unix ou Cygwin no Windows, em uma sessão de terminal

wget -i your.txt

2. Extrair links de um arquivo

E, em seguida, para cada arquivo baixado, execute

cat FILE | \
sed 's/href=/\nhref=/g' | \
grep href=\" | \
sed 's/.*href="//g;s/".*//g' >> out.txt

Caso algo esteja faltando, execute

sudo apt-get install coreutils wget grep sed

em um Debian Linux, apesar do fato de que a maioria dos sistemas vem com eles por padrão.

Se você optar por fazer isso em uma sessão do Cygwin, lembre-se de selecionar Core Utilities , Wget , grep e sed ao instalar.

    
por 30.06.2017 / 20:14