He utilizado para raspar e-commerce página ocasionalmente para obtener los precios de los productos de información. No he utilizado el rascador construido utilizando Scrapy en un tiempo y ayer estaba tratando de usar – se me presenta un problema con el bot de protección.

Es usando CloudFlare protección DDOS que es básicamente el uso de JavaScript evaluación para filtrar los navegadores (y, por tanto, raspadores) con JS desactivado. Una vez que la función se evalúa la respuesta con el número calculado es generado. En cambio, el servicio envía dos cookies de autenticación que se adjunta a cada solicitud de permitir a la que normalmente rastrear el sitio. Aquí‘s la descripción de cómo funciona.

También he encontrado un cloudflare-scrape módulo de Python que utiliza JS externo de evaluación del motor para calcular el número y enviar la solicitud al servidor. No estoy seguro de cómo se integran en ella Scrapy aunque. O tal vez hay una forma más inteligente sin uso de JS ejecución? En la final, es una forma…

Me gustaría apriciate cualquier ayuda.

lo que está mal con la ejecución de la JS? una gran cantidad de contenido que no puede ser alcanzado sin él…
Scrapy no JS ejecución.
sin JS, raspado es cada vez más inútil todo el tiempo. usted debe considerar el uso de un navegador para raspar. mi raspar secuencias de comandos puede conseguir detrás de inicios de sesión, agarrar dinámico y paginado de contenido, incluso los falsos clic para solicitar más dinámico sub-contenido antes de raspar, y no creo que hayan sido más de 10 líneas de código o necesita una gran biblioteca externa. todo lo que necesitas es tampermonkey y descarga la rutina… un BESO. si desea más automatizado, puedes cambiar el userscript a phantomJS, o algo parecido.
para la ejecución de JS puede usar splash, que está totalmente integrado con scrapy.

OriginalEl autor Kulbi | 2015-10-20

2 Comentarios

  1. 9

    Así que ejecuta JavaScript usando Python con la ayuda de cloudflare-scrape.

    A su rascador, es necesario agregar el siguiente código:

    def start_requests(self):
      for url in self.start_urls:
        token, agent = cfscrape.get_tokens(url, 'Your prefarable user agent, _optional_')
        yield Request(url=url, cookies=token, headers={'User-Agent': agent})

    junto con el análisis de funciones. Y eso es todo!

    Por supuesto, usted necesita para instalar cloudflare-raspar la primera y la importación a la araña. También se necesita un JS motor de ejecución instalado. Yo había Node.JS ya, no hay quejas.

    Hola, he intentado utilizar la solución para un sitio web usando cloudflare – parece Que el derecho de petición está siendo enviado, pero todavía estoy en tiempo de espera con errores 503 de la primera solicitud. Aquí está lo que el reuqests aspecto: DEBUG: "GET /cdn-cgi/l/chk_jschl?jschl_answer=386&jschl_vc=3ee197400dbcca30577bcb3949cf781f&pass=1446694346.755-esyN0f4s4%2F HTTP/1.1" 302 165 DEBUG: "GET /forumdisplay.php?29-DotA-Chat HTTP/1.1" 200 21367 2015-11-04 22:32:48 [scrapy] DEBUG: Gave up retrying <GET http://nadota.com/forumdisplay.php?29-DotA-Chat> (failed 3 times): 503 Service Unavailable
    He actualizado el código. Va a trabajar ahora. Cambio cookies={"cfuid":token["cfuid"]} a cookies=token

    OriginalEl autor Kulbi

  2. 3

    Obviamente la mejor manera de hacerlo sería a la lista blanca de su IP en CloudFlare; si esto no es adecuado dejar que me recomiendan el cloudflare-scrape de la biblioteca. Usted puede utilizar esto para obtener la cookie de token, a continuación, proporcionar esta cookie token en su Scrapy solicitud de vuelta al servidor.

    OriginalEl autor mjsa

Dejar respuesta

Please enter your comment!
Please enter your name here