Como navegar pela paginação baseada em PHP com o WGET?

0

Estou tentando criar uma lista de possíveis nomes para o nosso próximo menino e tenho procurado pelo site IndiaParenting . Cada nome no site tem uma página de detalhes em um URL como este http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml . Eu gostaria que o nome fosse semelhante ao nosso primogênito e estou tentando fazer o seguinte:

  • WGET todas as páginas do site que contêm "significado" 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 para colocar tudo em um único arquivo de texto.
  • Analise o arquivo gerado para um regex específico para encontrar possíveis nomes. O nome do primeiro filho é Ranveer, e estamos procurando nomes que começam com N ou R, então o regex é provavelmente algo como: [NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou] .
  • Percorrer manualmente a lista final com a Madam & 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 ao URL de outra página como normal:

EuolheieencontreioJSpagingFunction:

functionpagingFunction(labelName){vpage=document.getElementById("pageNum");     
    pageNm = labelName;         
    vpage.value = pageNm;
    document.getElementById("frmPaging").submit();      
}

Pergunta: Eu pensava que recursivamente WGET as 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: Eu pensei em gerar uma lista baseada no regex, mas seria muito longo e ter muitos nomes inválidos de qualquer maneira, e é por isso que eu gostaria de me basear em nomes reais de um desses bebês nomes de sites. Também vou entrar em contato com o site para ver se eles podem apenas executar uma consulta no banco de dados e colocar os nomes em um arquivo para mim e, se tudo mais falhar, há outros sites para verificar.

    
por rishimaharaj 10.07.2014 / 08:05

1 resposta

0

Este site tem um design particularmente estranho. Apenas uma nota, no entanto, o PHP não faz diferença aqui.

Parece que eles carregam páginas com o seguinte método:

  1. Clicar no link executa algum JS.
  2. Esse JS preenche um formulário oculto com o número da página.
  3. O script envia o formulário, que faz uma solicitação POST para o servidor.
  4. O servidor responde diretamente com a página relevante.

Você tem algumas opções aqui. O mais fácil é simplesmente fazer o script de uma solicitação wget com --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, é isso 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 envolvido seria usar um kit de ferramentas de automação de navegador como o Selenium para literalmente navegar e clicar nos links, ativando o JS exatamente como um humano faria.

    
por 10.07.2014 / 08:36