Estou tentando fazer uma lista de possíveis nomes para o nosso próximo filho e estou pesquisando no siteÍndiaPaternidade. Cada nome no site possui uma página de detalhes em uma URL como esta http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml
. Gostaria que o nome fosse semelhante ao do nosso primogênito e estou tentando fazer o seguinte:
- WGET todas as páginas do site que contém "significado de" para uma única pasta no meu disco rígido, com algo como
wget -nc -c -nd -r -l1 -k http://www.indiaparenting.com/babynames/hindu-boy-names.php -A "meaning-of*" -I /babynames
- Faça algo como
dir > filenames.txt
colocar tudo em um único arquivo de texto. - Analise o arquivo gerado em busca de um regex específico para encontrar nomes possíveis. O nome do primeiro filho é Ranveer e estamos procurando nomes que comecem com N ou R, então a regex provavelmente é algo como:
[NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou]
. - Percorra manualmente a lista final com a Senhora e escolha um nome!
O problema que estou tendo é com o wget. A página é criada com PHP e na parte inferior há um navegador de páginas que não vincula a URL de outra página como normal:
Procurei e encontrei o JS pagingFunction:
function pagingFunction(labelName){
vpage = document.getElementById("pageNum");
pageNm = labelName;
vpage.value = pageNm;
document.getElementById("frmPaging").submit();
}
Pergunta: Eu pensei que o WGET recursivo das páginas iria página por página, mas isso não acontece. Existe uma maneira de lidar com isso com o WGET? Se não, existe outra opção?
Outras informações: pensei em gerar uma lista baseada na regex, mas seria muito longa e teria muitos nomes inválidos de qualquer maneira, e é por isso que gostaria de baseá-la em nomes reais de um desses sites de nomes de bebês. Também vou entrar em contato com o site para ver se eles conseguem simplesmente executar uma consulta em seu banco de dados e colocar os nomes em um arquivo para mim e, se tudo mais falhar, há outros sites para verificar.
Responder1
Este site tem um design particularmente estranho. Apenas uma observação, porém, o PHP não faz diferença aqui.
Parece que eles carregam páginas com o seguinte método:
- Clicar no link executa algum JS.
- Este JS preenche um formulário oculto com o número da página.
- O script então envia o formulário, que faz uma solicitação POST ao servidor.
- O servidor responde diretamente com a página relevante.
Você tem algumas opções aqui. O mais fácil é simplesmente criar um script de wget
solicitação --post-data
em um loop para recuperar todas as páginas de 1 a n. Consulte a documentação e o monitor de rede do seu navegador para descobrir qual é a solicitação real. Por exemplo, isto é o que o monitor de rede do Firefox diz que o corpo da solicitação é:
Content-Type: application/x-www-form-urlencoded
Content-Length: 145
pagingQuery=select+*+from+tblbabynames+where+++religion%3D%27hindu%27+and+gender%3D%27M%27+limit+0%2C30&totalRows=3097&pageNum=2&searchResultNo=0
Você provavelmente pode substituir o pageNum=2
em um loop.
Um método mais complexo seria usar um kit de ferramentas de automação de navegador como o Selenium para navegar literalmente ecliqueos links, ativando o JS como um humano faria.