Pergunta

Eu estou tentando automatizar a extração de dados de um site e eu realmente não sei por onde começar. Um dos nossos fornecedores está dando-nos acesso a alguns dados de registro equipamento através de um " Business Objects 11 " inscrição on-line. Se você não estiver familiarizado com este aplicativo on-line, pense nisso como um gerador de relatórios baseado na web. O problema é que eu estou tentando monitorar um lote de equipamentos e este fornecedor só criou um pedido para extrair um log de cada vez. Este pedido tem o número do equipamento, a data de início ea data final ... Para piorar a situação, só podemos exportar para o formato Excel binário desde de "csv" exportar é quebrou e eles se recusam a corrigi-lo ... daí nós são limitados por 65 536 limitação linha do Excel ... (Isso equivale a 3-4 dias de gravação de dados no meu caso). Eu não posso criar uma nova resquest como só o fornecedor tem os direitos necessários de administração.

O que você acha que seria a maneira mais elegante de correr um monte de pedidos (cerca de 800) através de uma interface gráfica web? Acho que eu poderia codificar posições do mouse, clique em eventos, e teclas com atrasos e tudo ... Mas tem que haver uma maneira melhor.

Eu li sobre AutoHotKey e AutoIt scripting, mas eles parecem estar limitados quanto ao que eles podem fazer na web. Além disso ... Eu estou preso com IE6 ... Mas se você sabe uma maneira que envolve outro navegador, eu ainda estou muito interessado em sua resposta.

(uma vez que tenho os arquivos de log localmente, extraindo os dados são não um problema)

Foi útil?

Solução

Há algumas coisas que você pode tentar. Se o site é um html e relatórios podem ser solicitados por um simples POST ou GET, então URLib / urlib2 e cookielib Python módulos deve ser suficiente para buscar um documento Excel.

Em seguida, você pode tentar este: xlrd para extrair dados de excel.

Além disso, dê uma olhada em: http://pamie.sourceforge.net /. Eu nunca tentei me, mas parece promissor e fácil de usar.

Outras dicas

Normalmente, gostaria de sugerir a não usar o IE (ou qualquer browser) em tudo. Lembre-se, software navegador web são programas apenas de proxy para fazer solicitações HTTP e exibir os resultados de maneira significativa. Há outras maneiras que você pode fazer solicitações HTTP semelhantes e processar as respostas. Quase toda linguagem moderna tem esta embutido de algum lugar API. Isso é chamado de captura de tela ou raspagem web.

Mas para completar esta sugestão que eu preciso saber mais sobre o seu ambiente de programação: ou seja, em qual linguagem de programação você imagina escrever este roteiro

Um exemplo típico usando C #, onde você acabou de obter o resultado html como corda ficaria assim:

new System.Net.WebClient().DownloadString("http://example.com");

Você, então, analisar a cadeia de encontrar quaisquer campos que você precisa e enviar um outro pedido. A classe WebClient também têm um método .DownloadFile() que você pode achar útil para recuperar os arquivos do Excel.

Uma vez que você pode usar NET, você deve considerar o uso do Windows Forms controle WebBrowser. Você pode automatizar isso para navegar até o site, apertar botões, etc. Uma vez que a página do relatório é carregado, você pode usar o código para navegar o DOM HTML para encontrar os dados que você quer -. Há expressões regulares envolvidos

Eu fiz algo parecido com isso anos atrás, para extrair dados de leilões do eBay.

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