2015-07-24 9 views
5

Ich möchte einen Crawler erstellen, der die URL einer Webseite nimmt, die zu scrapped wird, und das Ergebnis zurück an eine Webseite sendet. Im Moment beginne ich mit dem Scrapy vom Terminal und speichere die Antwort in einer Datei. Wie kann ich den Crawler starten, wenn eine Eingabe zu Flask gepostet wird, verarbeitet wird und eine Antwort zurückgegeben wird?Start scrapy von Flask Route

+0

Sorry, die letzte Zeile ist ein wenig verschwommen. Was machst du mit Flask? Welcher Prozess? Und gib die Antwort zurück wo? –

+0

Ich benutze FLASK, um die Endpunkte zu offenbaren, so dass jemand von einer Web-App eine Eingabe schreiben kann, d. H. Den Webseiten-Link, der gecrackt werden soll. Dann möchte ich die Spinne starten und diese Eingabe übergeben und die Crawler-Antwort zurück an die Web-App senden. – Ashish

+0

Ich beantwortete gerade ähnliche Frage hier: https://StackOverflow.com/Questions/36384286/How-to-integrate-flask-scrapy –

Antwort

4

Sie müssen einen CrawlerProcess in Ihrer Flask-Anwendung erstellen und den Crawl programmatisch ausführen. Siehe 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 

Bevor Sie mit Ihrem Projekt weitergehen Ich rate Ihnen, in eine Python-Task-Queue zu suchen (wie rq). Dadurch können Sie Scrapy-Crawls im Hintergrund ausführen und Ihre Flask-Anwendung wird nicht eingefroren, während die Scrapes ausgeführt werden.

+0

Ich habe es unter scrapy verwendet. Stellen Sie bitte ein Code-Snippet zur Verfügung, welches Spider unter der Flask-Anwendung läuft ???? – Vasim