从 python 脚本调用 scrapy 不创建 JSON 输出文件

2023-12-01

这是我用来调用 scrapy 的 python 脚本,答案是

从脚本中抓取的 Scrapy 总是在抓取后阻止脚本执行

def stop_reactor():
    reactor.stop()
dispatcher.connect(stop_reactor, signal=signals.spider_closed)
spider = MySpider(start_url='abc')
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
log.msg('Running reactor...')
reactor.run()  # the script will block here until the spider is closed
log.msg('Reactor stopped.')

这是我的 pipelines.py 代码

from scrapy import log,signals
from scrapy.contrib.exporter import JsonItemExporter
from scrapy.xlib.pydispatch import dispatcher

class scrapermar11Pipeline(object):


    def __init__(self):
        self.files = {}
        dispatcher.connect(self.spider_opened , signals.spider_opened)
        dispatcher.connect(self.spider_closed , signals.spider_closed)


    def spider_opened(self,spider):
        file = open('links_pipelines.json' ,'wb')
        self.files[spider] = file
        self.exporter = JsonItemExporter(file)
        self.exporter.start_exporting()

    def spider_closed(self,spider):
       self.exporter.finish_exporting()
       file = self.files.pop(spider)
       file.close()

    def process_item(self, item, spider):
        self.exporter.export_item(item)
        log.msg('It reached here')
        return item

该代码取自这里

Scrapy :: JSON 导出问题

当我像这样运行爬虫时

scrapy crawl MySpider -a start_url='abc'

创建了具有预期输出的链接文件。但是,当我执行 python 脚本时,尽管爬虫运行,但它不会创建任何文件,因为转储的 scrapy 统计信息与之前运行的统计信息类似。 我认为 python 脚本中有一个错误,因为文件是在第一种方法中创建的。我如何让脚本输出文件?


这段代码对我有用:

from scrapy import signals, log
from scrapy.xlib.pydispatch import dispatcher
from scrapy.conf import settings
from scrapy.http import Request
from multiprocessing.queues import Queue
from scrapy.crawler import CrawlerProcess
from multiprocessing import Process
# import your spider here
def handleSpiderIdle(spider):
        reactor.stop()
mySettings = {'LOG_ENABLED': True, 'ITEM_PIPELINES': '<name of your project>.pipelines.scrapermar11Pipeline'} 

settings.overrides.update(mySettings)

crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()

spider = <nameofyourspider>(domain="") # create a spider ourselves
crawlerProcess.crawl(spider) # add it to spiders pool

dispatcher.connect(handleSpiderIdle, signals.spider_idle) # use this if you need to handle idle event (restart spider?)

log.start() # depends on LOG_ENABLED
print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 python 脚本调用 scrapy 不创建 JSON 输出文件 的相关文章

  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • XDocument.Validate 始终成功

    我有一个架构文件 它没有定义任何目标命名空间 即它的定义如下所示
  • Hive 上的 Spark SQL 查询执行

    我是 Spark SQL 新手 但了解 Hive 查询执行框架 我想了解spark如何执行sql查询 技术说明 如果我按照命令开火 val sqlContext new org apache spark sql hive HiveConte
  • 如何使 setInterval 在一段时间或多次操作后停止?

    我用 jQuery 创建了一个 改变单词 的循环 通过使用此答案中的代码 jQuery 查找单词并每隔几秒更改一次 一段时间后如何停止 是说 60 秒后还是循环结束后 function List your words here var wo
  • 格式化 pandas 中的数字

    对于 pandas DataFrame df min max mean a 0 0 2 300000e 04 6 450098e 02 b 0 0 1 370000e 05 1 651754e 03 c 218 0 1 221550e 10
  • 如何使用 P/Invoke 在 C# 中返回列表?

    我正在开发一个小项目 我使用 P Invoke 并希望在 C 中返回以下内容 public class std list
  • 下面的格式说明符在做什么?

    else printf 3hho data 我无法在网上或通过阅读 C 编程语言书籍找到有关如何破译它的信息 我在下面的代码片段中看到了它 该代码尝试在 telnet 协议中执行密码嗅探 if pktlen sizeof struct ip
  • 使用 hibernate 从数据库获取下一个序列值

    我有一个实体 该实体具有必须从序列设置的非 ID 字段 目前 我获取序列的第一个值 将其存储在客户端 然后根据该值进行计算 然而 我正在寻找一种 更好 的方法来做到这一点 我已经实现了一种获取下一个序列值的方法 public Long ge
  • 通过 Dexterity 在字段集之间移动字段

    在 Archetypes 中 为了将字段从字段集 或模式 移动到另一个字段集 或模式 我们可以执行以下操作 schema creators schemata default 然而 我并没有使用敏捷来实现同样的目标 我尝试过使用表单提示 前任
  • 如何使用 Microsoft Graphs 访问共享邮箱

    是否可以使用图表访问共享邮箱 我想使用图表访问共享邮箱邮件文件夹 只需将其视为任何其他用户即可 https graph microsoft com v1 0 users 电子邮件受保护 消息 确保您设置了正确的权限 Mail Read Sh
  • Django:将值从模板传递到视图

    我遇到过这种情况 单击 html 提交按钮 我调用views stream response哪个 激活 views stream response generator哪个 激活 流 py并返回一个流式Http响应我每秒都会看到一个渐进的数字
  • 如何从 xamarin.forms 中的应用程序打开设置?

    我正在研究 xamarin forms 仅在android中面临以下问题 当我的应用程序启动时 它会检查我的 GPS 位置是否打开或关闭 要检查 GPS 位置的开启或关闭 我正在使用依赖服务 public static bool Check
  • 合并 R 中的唯一值

    这是示例数据 set seed 123 data1 lt data frame id1 rep 1 5 each 2 nam1 rnorm 5 1 data2 lt data frame id2 rep 3 12 each 2 nam2 r
  • 您最喜欢的使用 Bash 的命令行技巧是什么? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前
  • 如何在选项卡之间切换时停止执行 AsyncTask,同时保留之前的内容

    让我解释一下我的问题 假设我有三个选项卡 片段 ab1 片段 ab2 片段 ab3 现在我在 FragmentTab1 中有列表视图 这里我使用AsyncTask加载数据OnCreateView 数据正在完美加载 现在 当我查看详细信息并再
  • asp.net中缓存过期时的回调

    有谁知道当缓存过期时如何在 ASP NET 中运行函数的教程或示例 我读过有关缓存过期时进行的回调的信息 但我没有找到任何示例 我需要这个来做网站 它需要在每天的确切时间执行一个函数 hhh3112 当缓存过期时 您可以使用回调 你能再解释
  • 以24小时制显示日期

    我正在使用简单的应用程序 我可以在其中获取最新信息DateTime并将其转换为24 hour format Code String DATE yyyy MM dd hh mm ss yyyy MM dd hh mm ss String DA
  • war webapp 中 Tomcat 服务器绝对文件访问

    我有一个 Spring web 应用程序 war文件已上传至 Tomcat 服务器 大多数基本功能都按预期工作 页面视图和表单提交 我现在的问题是我的 web 应用程序需要读取和写入文件 而我对如何实现这一点一无所知 文件 I O 返回ja
  • jQuery绑定粘贴事件,如何获取粘贴的内容

    我有一个 jquery token tagit 插件 我想绑定到粘贴事件以正确添加项目 我可以像这样绑定到粘贴事件 bind paste paste input function paste input e console log e re
  • 使用简单的注入器注册 Web API 控制器的子集

    我正在手动注册项目的 Web API 控制器的子集 container Register typeof ILGTWebApiController controllerType Lifestyle Transient 工作正常 但是 当我运行
  • 从 python 脚本调用 scrapy 不创建 JSON 输出文件

    这是我用来调用 scrapy 的 python 脚本 答案是 从脚本中抓取的 Scrapy 总是在抓取后阻止脚本执行 def stop reactor reactor stop dispatcher connect stop reactor