Extrair dados de um formulário de cadastro

27/06/2019

0

Olá pessoal!

Preciso extrair uma quantidade razoável de dados de um site de um cliente com dois propósitos bem específicos:
1) Aprender mais sobre linguagem PhP e programação no geral
2) Manipular estes dados no futuro para facilitar meu trabalho e me tomar menos tempo.

Mas, vamos por partes. Primeiro preciso extrair estas informações e armazená-las em outro banco de dados que eu tenha controle. A ficha de cada pessoas cadastrada vem num código HTML com o nome de todas as IDs de campo e seus valores, alguns são strings, outros são numéricos, outros são booleanos e dois são imagens que eu também preciso armazenar. Cada cadastro está numa página com endereço numérico, o que facilita correr por todas elas, pq o endereço é nesse padrão: http://sitedocadastro.com.br/XXXX/página/, onde o XXXX é um número de 52 a 2654, o resto da url não muda.

Então pra correr as páginas dá pra fazer um loop e dentro deste loop o código vai identificando cada ID, pegando seu conteúdo e inserindo em outra variável que salva no meu BD. São mais de 70 campos, todos eles estão "expostos" no código html.
Exemplo;
<label for="dados_pessoais_cep" class="col-sm-3 control-label">Cep:</label>
<div class="col-md-3">
<input class="form-control" name="dados_pessoais_cep" type="text" value="13315-000" id="dados_pessoais_cep">

Alguns campos são opções do tipo Sim/Não ou caixa de opções pré-definidas.
As imagens, se eu tento abrir só ela em outra janela, ela abre, então acredito que é possível pegar o url dela e salvar direto no meu HD mas não sei como fazer a associação no meu banco de dados depois.

Enfim, estou pedindo ajuda de vcs. Por onde começar?

Obrigado!
André

André

Responder

Posts

28/06/2019

William Nascimento

Olá pessoal!

Preciso extrair uma quantidade razoável de dados de um site de um cliente com dois propósitos bem específicos:
1) Aprender mais sobre linguagem PhP e programação no geral
2) Manipular estes dados no futuro para facilitar meu trabalho e me tomar menos tempo.

Mas, vamos por partes. Primeiro preciso extrair estas informações e armazená-las em outro banco de dados que eu tenha controle. A ficha de cada pessoas cadastrada vem num código HTML com o nome de todas as IDs de campo e seus valores, alguns são strings, outros são numéricos, outros são booleanos e dois são imagens que eu também preciso armazenar. Cada cadastro está numa página com endereço numérico, o que facilita correr por todas elas, pq o endereço é nesse padrão: http://sitedocadastro.com.br/XXXX/página/, onde o XXXX é um número de 52 a 2654, o resto da url não muda.

Então pra correr as páginas dá pra fazer um loop e dentro deste loop o código vai identificando cada ID, pegando seu conteúdo e inserindo em outra variável que salva no meu BD. São mais de 70 campos, todos eles estão "expostos" no código html.
Exemplo;
<label for="dados_pessoais_cep" class="col-sm-3 control-label">Cep:</label>
<div class="col-md-3">
<input class="form-control" name="dados_pessoais_cep" type="text" value="13315-000" id="dados_pessoais_cep">

Alguns campos são opções do tipo Sim/Não ou caixa de opções pré-definidas.
As imagens, se eu tento abrir só ela em outra janela, ela abre, então acredito que é possível pegar o url dela e salvar direto no meu HD mas não sei como fazer a associação no meu banco de dados depois.

Enfim, estou pedindo ajuda de vcs. Por onde começar?

Obrigado!



Olá André, não entendi muito bem a sua pergunta, porém acho que o que você está procurando se chama crawler ou pelo meno se encaixa bem na sua pergunta. No web crawler você consegue fazer essa raspagem de dados, basicamente você "baixa a página html inteira", ai lá você teria que pegar os dados das determinadas páginas "baixada" via expressões regulares ( Regex ). Quanto a automatizar essa tarefa se é isso que você pretende também fazer, você teria que usar o selenium.

Essa lib é para PHP e é usado para fazer webcrawler:
https://github.com/spatie/crawler

Responder

28/06/2019

André



Olá André, não entendi muito bem a sua pergunta, porém acho que o que você está procurando se chama crawler ou pelo meno se encaixa bem na sua pergunta. No web crawler você consegue fazer essa raspagem de dados, basicamente você "baixa a página html inteira", ai lá você teria que pegar os dados das determinadas páginas "baixada" via expressões regulares ( Regex ). Quanto a automatizar essa tarefa se é isso que você pretende também fazer, você teria que usar o selenium.

Essa lib é para PHP e é usado para fazer webcrawler:
https://github.com/spatie/crawler



Oi William ! Obrigado pelo retorno!

Eu trabalho pra uma agência e o sistema atual é extremamente mecânico. São dois sistemas na verdade, parte do site está em Joomla, é onde ficam as informações ao público, outra parte é a administrativa, que é um banco de dados que a agência usa pra salvar tudo sobre cada pessoa e estão em servers diferentes. O primeiro eu acesso como adm, o Joomla e também tenho acesso ao host e CPanel, já o segundo eu só consigo entrar como adm, não tenho acesso ao banco de dados diretamente.

Sendo assim, pra colocar um perfil novo online, eu preciso pegar esses dados no cadastro (este que eu quero puxar) e digitar algumas informações dentro de artigos no joomla. Cada artigo do site em Joomla tem um ID e dentro de cada artigo existe um link pra um WidGetKit que é pré-configurado (módulo do Joomla) e que só serve pra exibir as fotos desta pessoa, mas tem um ID próprio também e tudo tem que estar amarrado Nome->ID_artigo->ID_Widgetkit. Esse controle é feito por uma planilha no excel.
Essas fotos que são exibidas via WK(Widgetkit) ficam em pastas dentro de cada categoria, ou seja, eu primeiro subo as fotos na pasta definitiva dentro do servidor, configuro um novo WK pra essa pasta e depois crio um novo artigo linkando esse WK dentro dele. Neste artigo tem um código HTML bem simples onde algumas infos são alteradas pra cada perfil.

Tudo seria mais fácil se ficasse numa base só, mas peguei a coisa funcionando assim e é assim que está hoje. Devido as parcerias correntes com essa empresa, eu não posso atravessar e substituir tudo, então tento me adaptar à situação.

São várias etapas pra cadastrar um novo perfil e aos poucos eu queria ir automatizando e organizando isso, começando pelo principal que é ter o controle dos dados gerais de cada pessoa cadastrada. São mais de 2.600 cadastros e seria impossível eu fazer isso um a um.

O próximo passo seria usar um script pra gerar o código html à partir das informações obtidas no cadastro da pessoa e já sair com ele pronto pra colar no artigo, com tudo formatado já no padrão.

A situação ideal: Uma ferramenta que interaja com o Joomla e crie automaticamente os artigos, os WKs, verifique duplicidade de nomes e outras etapas que aos poucos eu iria implementando.

Quero chegar numa ferramenta pra agilizar todo o processo, me poupar tempo pra outros trabalhos e aprender com isso.

Esta ferramenta seria um site secundário ou administrativo onde eu acesso via web e dentro dele tenha as opções de puxar novos cadastros, gerar o código html do artigo, armazenar o os IDs de ambos (artigo e WK) pra cada pessoa e já calcular meus ganhos, pois ganho por pessoa que coloco online. Bom, pelo menos seria o primeiro passo, chegar nisso.

Não sei se deu pra explicar direito a situação.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar