Estoy tratando de encontrar una lista de posibles nombres para nuestro próximo bebé y he estado revisando el sitio.Indiacrianza de los hijos. Cada nombre del sitio tiene una página de detalles en una URL como ésta http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml
. Me gustaría que el nombre fuera similar al de nuestro primogénito y estoy intentando hacer lo siguiente:
- WGET todas las páginas del sitio que contienen "significado de" en una sola carpeta en mi disco duro, con algo como
wget -nc -c -nd -r -l1 -k http://www.indiaparenting.com/babynames/hindu-boy-names.php -A "meaning-of*" -I /babynames
- Haga algo como
dir > filenames.txt
poner todo en un solo archivo de texto. - Analice el archivo generado en busca de una expresión regular específica para encontrar posibles nombres. El nombre del primer hijo es Ranveer y estamos buscando nombres que comiencen con N o R, por lo que la expresión regular probablemente sea algo como:
[NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou]
. - ¡Revise manualmente la lista final con la señora y elija un nombre!
El problema que tengo es con el wget. La página se crea con PHP y en la parte inferior hay un navegador de páginas que no enlaza a la URL de otra página como es normal:
Busqué y encontré la función de paginación JS:
function pagingFunction(labelName){
vpage = document.getElementById("pageNum");
pageNm = labelName;
vpage.value = pageNm;
document.getElementById("frmPaging").submit();
}
Pregunta: Había pensado que al realizar WGET recursivamente las páginas irían página por página, pero no es así. ¿Hay alguna manera de manejar esto con WGET? Si no, ¿hay otra opción?
Otra información: pensé en generar una lista basada en la expresión regular, pero sería demasiado larga y tendría demasiados nombres no válidos de todos modos, por lo que me gustaría basarla en nombres reales de uno de estos sitios de nombres de bebés. También me pondré en contacto con el sitio para ver si pueden simplemente ejecutar una consulta en su base de datos y poner los nombres en un archivo por mí, y si todo lo demás falla, hay otros sitios para consultar.
Respuesta1
Este sitio tiene un diseño particularmente extraño. Sólo una nota: PHP no hace ninguna diferencia aquí.
Parece que cargan páginas con el siguiente método:
- Al hacer clic en el enlace se ejecuta algo de JS.
- Este JS completa un formulario oculto con el número de página.
- Luego, el script envía el formulario, que realiza una solicitud POST al servidor.
- El servidor responde directamente con la página correspondiente.
Tienes un par de opciones aquí. Lo más fácil es simplemente escribir una wget
solicitud --post-data
en un bucle para recuperar todas las páginas del 1 al n. Consulte la documentación y el monitor de red de su navegador para averiguar cuál es la solicitud real. Por ejemplo, esto es lo que el monitor de red de Firefox dice que es el cuerpo de la solicitud:
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
Probablemente puedas reemplazarlo pageNum=2
en un bucle.
Un método más complicado sería utilizar un kit de herramientas de automatización del navegador como Selenium para navegar literalmente yhacer cliclos enlaces, activando el JS tal como lo haría un humano.