Pergunta

Sou desenvolvedor de Java e tenho uma pergunta sobre automatizar uma tarefa que me foi dada. Estou tendo que ter 3 vezes por dia, faça login neste site que temos no trabalho, selecione alguns elementos de formulário e clique em Enviar para imprimir um relatório. Estou me perguntando como posso escrever algum tipo de script que automatize esta tarefa? Por onde devo começar? Em que idioma devo fazer isso? Eu estava pensando que o PHP poderia fazer isso ou mesmo um roteiro Greasemonkey, possivelmente?

Muito obrigado.

Foi útil?

Solução

Verificação de saída ondulação em php. Ele permite que você faça todas as funções normais de um navegador da web com código (exceto mover o mouse). E sim, você precisará fazer raspagem na tela.

Outras dicas

Eu acho que o potencial ponto de discórdia que ainda não foi tocado é a sua frase "login neste site" ... dependendo de como você precisa fazer login, pode ser necessário entrar através de uma porta dos fundos para acessar o relatório.

Eu tive problemas com esse tipo de coisa no passado, quando tive que baixar um relatório de um site de terceiros. A questão era que eu não pude me autenticar para acessar os parâmetros do relatório devido à maneira de codificada e menos do que o script que eu fui obrigada a fazer login no site. No entanto, presumo que seu site seja interno à sua organização; portanto, pode ser possível ignorar/retrabalhar os requisitos de segurança para acessar os dados. Se for esse o caso, você poderá usar um dos métodos de raspagem de tela descritos acima.

Caso contrário, pode ser necessário incorporar o procedimento de login real em seu script ou aplicativo, baixar e capturar cookies que possam ser definidos e incorporá -los à sua solicitação de dados.

Não sei em que idioma seu formulário está escrito, mas o que você poderia fazer é:

  • reescrever o formulário para um script que gera o relatório quando chamado
  • use um Cron entrada para agendar esta tarefa a ser executada diariamente e envie a saída para você

Um cron é basicamente uma tarefa programada nos sistemas UNIX. Os servidores baseados no Windows podem usar o agendador de tarefas para o mesmo fim.

O acima pressupõe que você tenha acesso ao script que gera o relatório no momento e pode modificá -lo / copiá -lo para um novo arquivo que enviará a saída para você. Caso contrário, pode ser necessário procurar na tela. Como você é um desenvolvedor de Java, você pode encontrar Esta lista de utilitários de raspagem de tela Java à mão para você começar.

É chamado de "raspagem na web" ou "raspagem de tela", e existem muitas bibliotecas por aí para fazer isso. No entanto, não consegui falar com uma ferramenta específica de Java: sou um cara .NET (o caminho .NET seria o System.net.webclient ou system.net.httpwebrequest/system.net.httpwebropon). Mas tenho certeza de que há algo.

Enquanto isso, a primeira etapa é vá para a página em que você insere os valores do formulário e visualiza a fonte da página. Procure o específicou003Cform> elemento que você está preenchendo e veja para onde ele publica (é ação). Então, encontre qualqueru003Cinput>u003Cselect> , Assim,u003Ctextarea> Elementos que você usa, incluindo quaisquer entradas ocultas para o formulário e descubra quais valores você precisa obter. Isso lhe dirá como criar sua solicitação depois de encontrar uma biblioteca que permitirá enviá -lo.

Se você precisar fazer login no site primeiro para chegar à página, as coisas podem ser mais complicadas. Pode ser necessário recuperar e analisar um valor de sessão ou poder enviar certos cookies para o servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top