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

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

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 comowget -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.txtcolocar 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:

Seção de paginação

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:

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

Você tem algumas opções aqui. O mais fácil é simplesmente criar um script de wgetsolicitação --post-dataem 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=2em 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.

informação relacionada