Usando um navegador da web (IE ou Chrome), posso salvar uma página da web (.html) com o Ctl-S, inspecioná-la com qualquer editor de texto e ver os dados em formato de tabela. Eu quero extrair um desses números, mas para muitas páginas da Web, muitas para fazer manualmente. Então, eu gostaria de usar o WGET para obter essas páginas da Web uma após a outra e escrever outro programa para analisar o arquivo .html e recuperar o número desejado. Mas o arquivo .html salvo pelo WGET ao usar o mesmo URL do navegador não contém a tabela de dados. Por que não? É como se o servidor detectar que a solicitação é proveniente do WGET e não de um navegador da Web, e forneça uma página da Web esquelética, sem a tabela de dados. Como posso obter exatamente a mesma página da Web com o WGET? - THX!
MAIS INFORMAÇÕES:
Um exemplo da URL que estou tentando buscar é: http://performance.morningstar.com/fund/performance-return.action?t=ICENX®ion=usa&culture=en-US em que a cadeia ICENX é um símbolo de cotação de fundo mútuo , que mudarei para qualquer um de vários símbolos diferentes. Isso baixa uma tabela de dados quando visualizada em um navegador, mas a tabela de dados está ausente se buscada com WGET.
Respostas:
Como o roadmr observou, a tabela nesta página é gerada por javascript. O wget não suporta javascript, apenas despeja a página como recebida do servidor (ou seja, antes da execução de qualquer código javascript) e, portanto, a tabela está ausente.
Você precisa de um navegador sem cabeça que suporte javascript como phantomjs :
com save_page.js:
Então, se você deseja apenas extrair algum texto, pode ser mais fácil renderizar a página com o w3m:
e / ou modifique o script phantomjs para apenas despejar o que lhe interessa.
fonte
Você pode baixar um site completo usando
wget --mirror
Exemplo:
A linha de comando acima que você deseja executar quando deseja baixar um site completo e disponibilizado para visualização local.
Opções:
--mirror
ativa opções adequadas para espelhamento.-p
baixa todos os arquivos necessários para exibir corretamente uma determinada página HTML.--convert-links
após o download, converta os links no documento para visualização local.-P ./LOCAL-DIR
salva todos os arquivos e diretórios no diretório especificado.Para obter mais informações sobre as opções do Wget, leia mais este artigo: Visão geral Sobre todos os comandos do wget com exemplos , ou consulte a página de manual do Wget .
fonte
Em vez de
--recursive
, que apenas seguirá em frente e "aranha" todos os links em seu URL, use--page-requisites
. Deve se comportar exatamente como as opções descritas nos navegadores gráficos.Para obter mais informações, faça
man wget
e procure a--page-requisites
opção (use "/" para pesquisar enquanto lê uma página de manual).fonte
Se a resposta do servidor diferir dependendo da fonte solicitante, é principalmente devido à variável HTTP_USER_AGENT (apenas uma sequência de texto) que é fornecida com uma solicitação da fonte solicitante, informando o servidor sobre a tecnologia.
Você pode verificar o seu agente do navegador aqui -> http://whatsmyuseragent.com
De acordo com o manual do WGET, este parâmetro deve fazer o trabalho
--user-agent=AGENT
.Se isso não ajudar, ou seja, o processamento de JavaScript pode ser necessário para obter a mesma página que um navegador, ou talvez uma solicitação apropriada com parâmetros GET, para que o servidor prepare uma resposta que não exija JavaScript para preencher a página.
fonte