当前位置: 首页 > 面试题库 >

从json中的脚本输出中抓取

郗学
2023-03-14
问题内容

scrapy在python脚本中运行

def setup_crawler(domain):
    dispatcher.connect(stop_reactor, signal=signals.spider_closed)
    spider = ArgosSpider(domain=domain)
    settings = get_project_settings()
    crawler = Crawler(settings)
    crawler.configure()
    crawler.crawl(spider)
    crawler.start()
    reactor.run()

它成功运行并停止,但结果在哪里?我想要json格式的结果,该怎么办?

result = responseInJSON

就像我们使用命令一样

scrapy crawl argos -o result.json -t json

问题答案:

您需要手动设置FEED_FORMATFEED_URI设置:

settings.overrides['FEED_FORMAT'] = 'json'
settings.overrides['FEED_URI'] = 'result.json'

如果要将结果放入变量中,可以定义一个Pipeline将项目收集到列表中的类。使用spider_closed信号处理程序查看结果:

import json

from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy import log, signals
from scrapy.utils.project import get_project_settings


class MyPipeline(object):
    def process_item(self, item, spider):
        results.append(dict(item))

results = []
def spider_closed(spider):
    print results

# set up spider    
spider = TestSpider(domain='mydomain.org')

# set up settings
settings = get_project_settings()
settings.overrides['ITEM_PIPELINES'] = {'__main__.MyPipeline': 1}

# set up crawler
crawler = Crawler(settings)
crawler.signals.connect(spider_closed, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)

# start crawling
crawler.start()
log.start()
reactor.run()

仅供参考,看看Scrapy如何解析命令行参数。



 类似资料:
  • 问题内容: 所以我有一个脚本,可以在服务器上输出详细信息。问题是我需要输出是。最好的方法是什么?这是bash脚本: 所以我想要的输出是这样的: 谢谢。 问题答案: 如果只需要输出小的JSON,请使用: 或者,如果您需要产生更大的JSON,请使用[leandro-mora]解释的heredoc。如果您使用here- doc解决方案,请确保对他的回答进行投票: 一些较新的发行版具有一个名为:或类似名称

  • 问题内容: 我从PHP脚本执行Python脚本时遇到问题。我的客户端使用Bluehost,因此我使用在此描述的easy_install方法为Python安装了第三方模块(numpy):https ://my.bluehost.com/cgi/help/530?step = 530 为了演示我的问题,我创建了两个python脚本和一个PHP脚本。 hello.py包含: hello-numpy.py

  • 问题内容: 我正在遵循本指南http://doc.scrapy.org/en/0.16/topics/practices.html#run-scrapy-from- a-script 从我的脚本中运行scrapy。这是我脚本的一部分: 它的工作原理应该是:访问页面,抓取所需信息,并将输出json存储在我告诉它的位置(通过FEED_URI)。但是,当蜘蛛完成他的工作(我可以在输出json中通过数字看

  • 主要内容:示例,执行测试标签呈现类型为“”的“”类型的HTML元素。此标签将外部JavaScript文件添加到JSF页面。 以下JSF标签 - 被渲染成以下HTML代码 - 示例 以下是文件: 中的代码 - 以下是文件: 中的代码 - 以下是文件: 中的代码 - 执行测试 使用 NetBeans 创建一个Web工程,名称为:Outputscript,并使用以上代码。运行项目,Tomcat启动完成后,在浏览器地址栏中输入以

  • 问题内容: 我是相对较新的人,并且想知道是否有任何示例禁止显示中的脚本管道输出。 我在网站上看到了此问题,但我不确定如何实现。 我也没有从有关此问题的问题中得到明确的答案。 我基本上想摆脱所有的东西: 问题答案: 先决条件: 管道:作业插件版本2.18或更高版本 简单主题插件 转到> > 。在现场输入以下内容 点击保存。 之后,您将不再看到任何[Pipeline]日志。

  • 问题内容: 我试图解析WMIC的输出,然后获取PID。 我的脚本如下: 输出如下: 我的目标是获取进程ID。 我已经尝试过将空间作为FOR循环中的delims。然而没有运气。 所以我的问题是如何格式化WMIC的列并获取列? 问题答案: WMIC使用SQL语法的子集。通过将LIKE运算符与通配符一起使用,可以在功能上将FINDSTR测试放在WMIC WHERE子句中。由于它在批处理脚本中,因此需要加