【问题标题】:Start scrapy from Flask route从 Flask 路由开始scrapy
【发布时间】:2015-07-24 03:46:54
【问题描述】:

我想构建一个爬虫,它获取要抓取的网页的 URL,并将结果返回给网页。现在我从终端开始scrapy并将响应存储在一个文件中。当一些输入发布到 Flask、处理并返回响应时,如何启动爬虫?

【问题讨论】:

  • 抱歉,最后一行有点模糊。你在用 Flask 做什么?什么流程?并将响应返回到哪里?
  • 我正在使用 FLASK 来公开端点,以便有人可以从网络应用发布输入,即要抓取的网页链接。然后,我想启动蜘蛛并传递该输入并将爬虫响应返回给 web-app。
  • 我刚刚在这里回答了类似的问题:stackoverflow.com/questions/36384286/…

标签: python flask scrapy


【解决方案1】:

您需要在 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 应用程序在抓取运行时不会冻结。

【讨论】:

  • 我在scrapy下用过。请你提供一些代码sn-p,它在flask应用程序下运行spider????
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2018-05-07
  • 2015-08-17
相关资源
最近更新 更多