Já aqui vos tinha contado o que ando a tentar capturar páginas da Internet com o Automator, mas não vos tinha dito que o estava a capturar as páginas para analisar os dados que lá têm. Por causa das questões que trato ali naquele outro site, quero capturar informação da Internet que me serve para outras análises.
Estou a recolher informação no site do Parlamento português, mas porque o site do Parlamento é mesmo muito mauzinho em termos de eficiência, cada recolha demora bastante tempo para obter qualquer coisa apreciável. Tive de abandonar a tentativa de recolher primeiro todas as páginas, e executar a extração dos dados depois. O código html e javascript nas páginas do Parlamento é mesmo muito mau, contendo colocação de objetos por tabelas, algo equivalente a paginar um romance com Excel. O site tem também links que só funcionam com Javascript, mais ou menos o equivalente a ligar o motor do carro para irem a pé.
Estou a usar o add on iMacros para Firefox, Chrome e Internet Explorer para resolver todas estas dificuldades. Embora este add on tenha uma linguagem de scripting crua, foi com recurso à utilização deste add on e com o script em Javascript que foi possível iniciar a tarefa com alguma possibilidades mínimas de sucesso.
As tentativas de recolha de todo o site que iniciei com o Httrack e continuei com o Automator, mas os links do site do Parlamento, contrariamente às normas de acessibilidade, normas das tecnologias utilizadas e melhores práticas propostas pelo World Wide Web Consortium para a world wide web, são em Javascript e sem possibilidade de navegar até aos links sem um rato. Este facto impede a sua utilização sem realmente se clicar com um rato, não respeita a obrigatoriedade dos organismos do Estado de fazer sites acessíveis a pessoas com necessidades especiais, dificultando a vida a indexadores web como o Google e outros motores de busca.
Por agora só vou recolher todos os links de todas as iniciativas de todas as legislaturas que é possível obter através do site da Assembleia da república para depois processar cada link de forma mais rápida. O script adapta-se às fraquezas do site através, mas não separa logo a informação ao mesmo tempo que a recolhe, guardando apenas os dados da tabela de resultados de pesquisa. O script é um composto de instruções de iMacros executadas em pilha pelo Javascript. O resultado é repetível e, com algumas modificações, também pode ser repetido noutras secções do mesmo site ou mesmo de outros sites.
Cada pedido de dados ao site do Parlamento teve de ser afinado com esperas de cerca de 20 segundos entre cada pedido para evitar os problemas criados pela lentidão do servidor. 8 horas de execução decorridas e vou em 282 de 832 tabelas de resumo prevista recolher. Cada tabela contem cerca de 20 iniciativas. O script tal como está preparado permitirá a recolha apenas da última legislatura para atualização dos dados no final desta legislatura.
window.open(‘http://www.parlamento.pt/ActividadeParlamentar/Paginas/IniciativasLegislativas.aspx’);
var Capturas = 0;
var LEGISLATURAX = [ “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”, “X”, “XI”, “XII” ]
var PAGINASN = [ 41, 48, 37, 77, 66, 74, 51, 62, 105, 73, 134 ]
var RETICENCIAS = [11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 111, 121, 131, 141]
var LEGISN = LEGISLATURAX.length;
var RETICENCIASN = RETICENCIAS.length;
var POSICAO = 1;// Selecionar Legislatura
for (LEGISLATURAS = 0; LEGISLATURAS < = LEGISN; LEGISLATURAS++)
{
var EXTRACT1 =”CODE:”;
// Usar o form de pesquisa para navergar para a legislatura
EXTRACT1 +=”VERSION BUILD=8890130 RECORDER=FX” + “\n”;
EXTRACT1 +=”TAB T=1″ + “\n”;
EXTRACT1 +=”URL GOTO=http://www.parlamento.pt/ActividadeParlamentar/Paginas/IniciativasLegislativas.aspx?back=5ccfbfca-beea-4a13-82ab-8a8260de645539045″ + “\n”;
EXTRACT1 +=”WAIT SECONDS=20″ + “\n”;
EXTRACT1 +=”TAG POS=1 TYPE=SELECT FORM=ID:aspnetForm ATTR=ID:ctl00_ctl43_g_889e27d8_462c_47cc_afea_c4a07765d8c7_ctl00_ddlLeg CONTENT=%” + LEGISLATURAX[LEGISLATURAS] + ” ” + “\n”;
EXTRACT1 +=”WAIT SECONDS=20″ + “\n”;
EXTRACT1 +=”TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:aspnetForm ATTR=ID:ctl00_ctl43_g_889e27d8_462c_47cc_afea_c4a07765d8c7_ctl00_btnPesquisar” + “\n”;
EXTRACT1 +=”WAIT SECONDS=20″ + “\n”;
iimPlay(EXTRACT1);
EXTRACT1 = “”;
// Navegar pelas páginas da legislatura para capturar tabelas
// alert(“legislatura ” + LEGISLATURAX[LEGISLATURAS] + ” Paginas ” + PAGINASN[LEGISLATURAS]);
for (PAGINAS = 1; PAGINAS <= PAGINASN[LEGISLATURAS]; PAGINAS++) { CARREGAR = PAGINAS + 1 // Copiar tabela com resultados da página PAGINAS // alert(“Copiar tabela ” + LEGISLATURAX[LEGISLATURAS] + ” página ” + PAGINAS ); var EXTRACT2 =”CODE:”; EXTRACT2 +=”VERSION BUILD=8890130 RECORDER=FX”+”\n”; EXTRACT2 +=”SET !EXTRACT_TEST_POPUP NO”+”\n”; EXTRACT2 +=”TAB T=1″+”\n”; EXTRACT2 +=”WAIT SECONDS=20″ + “\n”; EXTRACT2 +=”TAG POS=52 TYPE=TABLE ATTR=TXT:* EXTRACT=HTM”+”\n”; EXTRACT2 +=”SAVEAS TYPE=EXTRACT FOLDER=* FILE=resumo_” + LEGISLATURAX[LEGISLATURAS] + “_” + PAGINAS + “.html”+”\n”; Capturas = Capturas + 1 // Antes de carregar no link, // verficar se a página do link corresponde a um link com reticencias no texto ou a um número if ( RETICENCIAS.indexOf(CARREGAR) > -1 )
{
if (CARREGAR == 11)
{
CARREGAR=’…’;
POSICAO = 1; }
else
{
CARREGAR=’…’;
POSICAO = 2;
}
}
// alert(“Legislatura: ” + LEGISLATURAX[LEGISLATURAS] + ” Total Páginas: ” + PAGINASN[LEGISLATURAS] + “\n” + “Página: ” + PAGINAS + ” Carregar: ” + CARREGAR + ” POS: ” + POSICAO );
EXTRACT2 +=”REFRESH” + “\n”;
EXTRACT2 +=”WAIT SECONDS=20″ + “\n”;
EXTRACT2 +=”TAG POS=” + POSICAO + ” TYPE=A ATTR=TXT:” + CARREGAR + “\n”;
EXTRACT2 +=”WAIT SECONDS=20″ + “\n”;
iimPlay(EXTRACT2);
EXTRACT2 = “”;
POSICAO = 1;
}
}
alert(“Tabelas de resumo capturadas ” + Capturas);