type evento ejemplo javascript python onclick scrapy web-scraping

javascript - evento - onclick jquery html



¿Cómo usar CrawlSpider desde scrapy para hacer clic en un enlace con javascript onclick? (2)

Quiero scrapy para rastrear páginas donde pasar al siguiente enlace se ve así:

<a href="#" onclick="return gotoPage(''2'');"> Next </a>

¿Scrapy podrá interpretar el código javascript de eso?

Con la extensión livehttpheaders descubrí que hacer clic en Siguiente genera un POST con una gran cantidad de "basura" que comienza así:

encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n

Estoy tratando de construir mi araña en la clase CrawlSpider , pero realmente no puedo entender cómo codificarlo, con BaseSpider usé el método parse() para procesar la primera URL, que es un formulario de inicio de sesión, donde hizo un POST con:

def logon(self, response): login_form_data={ ''email'': ''[email protected]'', ''password'': ''mypass22'', ''action'': ''sign-in'' } return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)]

Y luego definí submit_next () para decir qué hacer a continuación. No puedo entender cómo le digo a CrawlSpider qué método usar en la primera URL.

Todas las solicitudes en mi rastreo, excepto la primera, son solicitudes POST. Están alternando dos tipos de solicitudes: pegar algunos datos y hacer clic en "Siguiente" para ir a la página siguiente.



La metodología actual será la siguiente:

  1. Publique su solicitud para llegar a la página (como lo está haciendo)
  2. Extraiga el enlace a la página siguiente de esa respuesta particular
  3. Simplemente solicite la siguiente página si es posible o use FormRequest nuevamente en la aplicación

Todo esto debe simplificarse con el mecanismo de respuesta del servidor, por ejemplo:

  • Puedes intentar usar dont_click = true en FormRequest.from_response
  • O puede querer manejar la redirección (302) proveniente del servidor (en cuyo caso tendrá que mencionar en el meta que necesita que la solicitud de redireccionamiento del identificador también se envíe a devolución de llamada).

Ahora, cómo resolverlo: use un depurador web como fiddler o puede usar el plugin FireBug de Firefox, o simplemente presione F12 en IE 9; y verifique que las solicitudes que un usuario realiza en el sitio web coinciden con la forma en que rastrea la página web.