python - spider - Botón "Hacer clic" con solicitudes
web scraping beautifulsoup tutorial (1)
Como puede ver en el recorte que publicó, al hacer clic en el botón se activa un código JavaScript, a saber, un método llamado myClick()
.
No es sencillo hacer clic en esto usando la biblioteca de solicitudes de pitones. Es posible que tenga más suerte tratando de averiguar qué sucede dentro de myClick()
. Creo que en algún momento, se realizará una solicitud POST
a un punto final HTTP. Si puede resolver esto, puede traducirlo a su código python.
Si eso no funciona, otra opción sería usar algo como Selenium / PhantomJS, que le da la capacidad de tener un navegador real, sin cabeza y con secuencias de comandos. Usando una herramienta de este tipo, puede hacer que complete formularios y haga clic en los botones. Puedes echar un vistazo a esto para responder , ya que te muestra cómo usar Selenium + PhantomJS de Python.
Asegúrate de no abusar de estos métodos mediante foros de correo no deseado o [inserta actividad ilegal o de otro modo abusiva aquí].
Tengo este pequeño sitio web. Quiero completar un formulario con la biblioteca de solicitudes. El problema es que no puedo acceder al siguiente sitio al completar los datos del formulario y presionar el botón (Entrar no funciona).
Lo importante es que no puedo hacerlo a través de un bot de algún tipo. Esto debe hacerse para que pueda ejecutar sin gráficos.
info = {''name'':''JohnJohn'',
''message'':''XXX'',
''sign'':"XXX",
''step'':''1''}
Las tres primeras entradas nombre, mensaje, signo son las áreas de texto y el paso es Creo que el botón.
r = requests.get(url)
r = requests.post(url, data=info)
print(r.text)
Los datos de formulario se ven así cuando envío una solicitud a través de Chrome manualmente:
- nombre: JohnJohn
- mensaje: XXX
- signo: XXX
- paso 1
El elemento del botón se ve así:
<td colspan="2" style="text-align: center;">
<input name="step" type="hidden" value="1">
<button id="button" type="button" onclick="myClick();"
style="background-color: #ef4023; width: 80px; font-face: times; font-size: 14pt;">
Wyślij
</button>
</td>
El siguiente sitio si hago esto manualmente tiene las mismas direcciones.