python - 如何从我的 main.py 脚本访问我的 Spider 数据?
问题描述
假设我已经启动了一个具有以下文件夹结构的 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
?
解决方案
您可以为此目的使用管道https://docs.scrapy.org/en/latest/topics/item-pipeline.html
只需创建一个管道并将您的输出或处理插入其中process_item
至于 Dataframes 部分,您可以在其中创建/导入一个数据框open_spider
并将其分配给一个 self 变量,以便在蜘蛛或process_item
使用管道比将代码放在其他任何地方要好,因为管道就像缓冲区一样工作,假设您以 100 个项目/秒的速度抓取项目,并且您以 10 个项目/秒的速度处理项目,那么使用管道不会减慢完成抓取的速度,它'宁愿在管道中排队你刮掉的物品。
推荐阅读
- google-oauth - 如何查找用户的电子邮件 ID?- 谷歌 Oauth2 API PHP 客户端
- azure-api-management - URL 模板参数在 APIM 中不起作用
- azure - Azure 上的大 JSON 流
- typescript - 用嵌套类创建类的最佳方法是什么?
- react-native - React Native中有数组时如何选中复选框?
- android - 当用户在应用程序打开时打开位置时,我获取位置为时已晚。这是我的 GPSTracking 代码
- sql - SQL 语句中的动态 IN 子句
- python - django 2 - 基于多个模型的嵌套查询
- php - 如何将同一帖子的数据组合在一起?
- oracle - 数据未插入到目标表