2015-07-24 19 views
5

Desidero creare un crawler che preleva l'URL di una pagina Web e restituisce il risultato a una pagina Web. In questo momento comincio a scricchiolare dal terminale e memorizzo la risposta in un file. Come posso avviare il crawler quando qualche input è pubblicato su Flask, elaborare e restituire una risposta?Inizio scrapy dal percorso Flask

+0

Siamo spiacenti, l'ultima riga è un po 'sfocata. Cosa stai facendo con Flask? Quale processo? E restituire la risposta a dove? –

+0

Sto utilizzando FLASK per esporre gli endpoint, in modo che da un'app Web qualcuno possa pubblicare un input, ovvero il link della pagina web da rimuovere. Quindi, voglio avviare lo spider e passare quell'input e restituire la risposta del crawler all'app web. – Ashish

+0

Ho appena risposto a una domanda simile qui: https://stackoverflow.com/questions/36384286/how-to-integrate-flask-scrapy –

risposta

4

È necessario creare un CrawlerProcess all'interno dell'applicazione Flask ed eseguire la ricerca per indicizzazione a livello di codice. Vedi lo docs.

import scrapy 
from scrapy.crawler import CrawlerProcess 

class MySpider(scrapy.Spider): 
    # Your spider definition 
    ... 

process = CrawlerProcess({ 
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' 
}) 

process.crawl(MySpider) 
process.start() # The script will block here until the crawl is finished 

Prima di passare con il vostro progetto vi consiglio di guardare in una coda compito Python (come rq). Ciò ti consentirà di eseguire Scrapy crawl in background e l'applicazione Flask non si bloccherà mentre sono in esecuzione gli scrap.

+0

L'ho usato sotto scrapy. Vi preghiamo di fornire qualche frammento di codice, che è in esecuzione spider sotto l'applicazione del pallone ???? – Vasim