我想构建一个抓取网页网址的抓取工具,并将结果返回给网页。现在我从终端开始scrapy并将响应存储在一个文件中。如何在Flask上发布一些输入,处理并返回响应时启动爬虫?
答案 0 :(得分:4)
您需要在Flask应用程序中创建CrawlerProcess并以编程方式运行爬网。请参阅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应用程序不会冻结。