如何从main.py脚本访问Spider数据?

时间:2019-05-12 00:37:27

标签: python python-3.x scrapy

让我们假设我已经使用此文件夹结构启动了一个Scrapy项目:

.root
├── main.py
├── scrapy.cfg
├── app
│  ├── items.py
│  ├── middlewares.py
│  ├── pipelines.py
│  ├── settings.py
│  └── spiders
│     ├── my_spider.py

因此,在main.py文件中,我有:

#!/usr/bin/env python
import scrapy
from app.spiders.my_spider import MySpider
from scrapy.crawler import CrawlerProcess
from scrapy.settings import Settings
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())
process.crawl(VultrSpider())
process.start()

当我在终端上运行./main.py时,效果很好,但是我有几个问题:

  • 如何打印项目的值而不是所有Scrapy输出?
  • 假设需要将数据导入main.py中的Pandas DataFrame,如何从main.py访问数据?

1 个答案:

答案 0 :(得分:2)

您可以将管道用于https://docs.scrapy.org/en/latest/topics/item-pipeline.html

只需创建管道并将您的输出或处理插入process_item

对于“数据框”部分,您可以在open_spider中创建/导入一个数据框,并将其分配给自变量以在Spider或process_item中使用

使用管道要比将代码放在其他地方更好,因为管道就像缓冲区一样工作,假设您以100项/秒的速度抓取项目,并以10项/秒的速度处理项目,那么使用管道将不会减慢抓取速度,它宁可将您的报废项目排队在管道中。