2015-07-24 2 views
5

Я хочу создать сканер, который будет извлекать URL-адрес веб-страницы и возвращать результат обратно на веб-страницу. Прямо сейчас я начинаю отрываться от терминала и сохраняю ответ в файле. Как запустить искатель, когда какой-то ввод отправляется в Flask, обрабатывать и возвращать ответ?Запустите scrapy from Flask route

+0

Извините, эта последняя строка немного нечеткая. Что вы делаете с Flask? Какой процесс? И верните ответ обратно туда, где? –

+0

Я использую FLASK, чтобы разоблачить конечные точки, так что из веб-приложения кто-то может опубликовать ввод, т. Е. Ссылку на веб-страницу, которую нужно очистить. Затем я хочу запустить паук и передать этот вход и вернуть ответ искателя обратно в веб-приложение. – Ashish

+0

Я просто ответил на аналогичный вопрос здесь: https://stackoverflow.com/questions/36384286/how-to-integrate-flask-scrapy –

ответ

4

Вам необходимо создать CrawlerProcess внутри вашего приложения Flask и запустить программный обход программно. См. 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 

Прежде чем двигаться дальше с вашим проектом я советую вам заглянуть в очереди задач Python (как rq). Это позволит вам запускать обход Scrapy в фоновом режиме, и ваше приложение Flask не будет зависеть во время работы scrapes.

+0

Я использовал его под scrapy. Не могли бы вы предоставить фрагмент кода, который запускает паук под флягой? – Vasim

Смежные вопросы