【问题标题】:twisted critical unhandled error on scrapy tutorialscrapy教程上扭曲的严重未处理错误
【发布时间】:2015-10-05 00:47:42
【问题描述】:

我是编程新手,正在尝试学习scrapy,使用scrapy教程:http://doc.scrapy.org/en/latest/intro/tutorial.html

所以我运行了“scrapy crawl dmoz”命令并得到了这个错误:

2015-07-14 16:11:02 [scrapy] INFO: Scrapy 1.0.1 started (bot: tutorial)
2015-07-14 16:11:02 [scrapy] INFO: Optional features available: ssl, http11
2015-07-14 16:11:02 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE':     'tu
torial.spiders', 'SPIDER_MODULES': ['tutorial.spiders'], 'BOT_NAME':   'tutorial'}

2015-07-14 16:11:05 [scrapy] INFO: Enabled extensions: CloseSpider, TelnetConsol
e, LogStats, CoreStats, SpiderState
Unhandled error in Deferred:
2015-07-14 16:11:06 [twisted] CRITICAL: Unhandled error in Deferred:
2015-07-14 16:11:07 [twisted] CRITICAL:

我使用的是 Windows 7 和 python 2.7。有人知道有什么问题吗?我该如何解决?

编辑:我的蜘蛛文件代码是:

# This package will contain the spiders of your Scrapy project
#
# Please refer to the documentation for information on how to create and manage
# your spiders.
import scrapy


class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
     start_urls = [
    "http://www.dmoz.org/computers/programming/languages/python/books/",
    "http://www.dmoz.org/computer/programming/languages/python/resources/"
]

    def parse(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename,'wb') as f:
            f.write(response.body)

items.py 代码:

import scrapy

class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

点子列表:

  • 引导管理 (0.3.3)
  • cffi (1.1.2)
  • 特征 (14.3.0)
  • 密码学 (0.9.3)
  • cssselect (0.9.1)
  • Django (1.7.7)
  • django-auth-ldap (1.2.4)
  • django-debug-toolbar (1.3.0)
  • django-mssql (1.6.2)
  • django-pyodbc (0.2.6)
  • django-pyodbc-azure (1.2.2)
  • django-redator (0.2.3)
  • django-reversion (1.8.5)
  • django-summernote (0.6.0)
  • django-windows-tools (0.1.1)
  • django-wysiwyg-redactor (0.4.3.2)
  • enum34 (1.0.4)
  • ez 设置 (0.9)
  • flup (1.0.2)
  • idna (2.0)
  • ipaddress (1.0.13)
  • iso8601 (0.1.4)
  • 日志记录 (0.4.9.6)
  • lxml (3.4.4)
  • 机械化 (0.2.5)
  • MySQL-python (1.2.4)
  • pbr (0.10.8)
  • 枕头 (2.7.0)
  • 点 (7.1.0)
  • pyasn1 (0.1.8)
  • pyasn1-modules (0.0.6)
  • pycparser (2.14)
  • pymongo (2.6)
  • pyodbc (3.0.7)
  • pyOpenSSL (0.15.1)
  • pypm (1.4.3)
  • python-ldap (2.4.18)
  • pythonselect (1.3)
  • pywin32 (218.3)
  • queuelib (1.2.2)
  • Scrapy (1.0.1)
  • 硒 (2.44.0)
  • 服务标识 (14.0.0)
  • 设置工具 (18.0.1)
  • 六(1.9.0)
  • sqlparse (0.1.15)
  • 码头工人 (1.3.0)
  • 扭曲 (15.2.1)
  • virtualenv (1.11.6)
  • virtualenv 克隆 (0.2.5)
  • virtualenvwrapper (4.3.2)
  • virtualenvwrapper-powershell (12.7.8)
  • w3lib (1.11.0)
  • xlrd (0.9.2)
  • zope.interface (4.1.2)

感谢您的关注,并为我糟糕的英语感到抱歉,这不是我的母语。

【问题讨论】:

  • 请显示您的蜘蛛文件的代码。
  • 我用蜘蛛代码更新了这个问题,弗兰克。我尝试复制并粘贴教程代码并自己输入,都产生了相同的错误。提请您注意。
  • 感谢您发布代码。这是文件的完整内容吗?我不得不在文件的开头添加import scrapy 并修复缩进并且您的错误没有弹出。请准确发布您的蜘蛛文件的内容 - 小的差异很重要(甚至可能是错误的原因)
  • 我的错,更新了整个代码。无论如何,如果您只是添加“import scrapy”并修复标识,您认为这可能是缺少任何安装吗?
  • 该错误看起来与缺少安装无关。我的怀疑是item 的定义。您是否已经按照教程的建议编辑了items.py

标签: python-2.7 scrapy scrapy-spider


【解决方案1】:

简短的回答是 你缺少 pywin32!

其他答案基本正确,但不是 100% 正确。 pywin32 不是 pip 安装!您必须从这里下载安装包:

http://sourceforge.net/projects/pywin32/files/pywin32/

确保您获得正确的位:32 或 64。在我的情况下,我没有意识到我在 64 位机器上安装了 32 位版本的 Python,安装程序失败并显示“无法在注册表中找到 Python 2.7 安装” .我必须安装 32 位版本的 pywin32。一旦我这样做了,scrapy crawl site 就起作用了。

【讨论】:

    【解决方案2】:

    Scrapy 崩溃:ImportError: No module named win32api

    由于这个 Twisted 错误,您需要安装 pywin32。

    【讨论】:

      【解决方案3】:

      我看不到您在写入文件时如何处理项目。但它可能是进口的。如果这不起作用,请尝试 pip install pywin --update 和 pip install Twisted --update,这应该重新安装所有损坏的文件。 另外,我不知道这是否是 Stack 的问题,但您有一些错误的识别。 从 scrapy.spiders 导入蜘蛛

      from {Projectname}.items import {Itemclass}
      import scrapy
      
      
      class DmozSpider(scrapy.Spider):
          name = "dmoz"
          allowed_domains = ["dmoz.org"]
          start_urls = [
          "http://www.dmoz.org/computers/programming/languages/python/books/",
          "http://www.dmoz.org/computer/programming/languages/python/resources/"]
      
          def parse(self, response):
              filename = response.url.split("/")[-2] + '.html'
              with open(filename,'wb') as f:
                  f.write(response.body)
      

      【讨论】:

      • 另外,在 Items.py 中,您必须导入包含 Dictionary 列表的 Field 项目。所以在你的 items.py 中导入这个 from scrapy.item import Item, Field
      【解决方案4】:

      我也开始学习scrapy,遇到了和你一样的问题。 折腾了一个下午,终于发现是pywin32模块只下载不安装的原因。 您可以尝试在cmd中输入以下命令完成pywin32模块安装并再次尝试爬取:

      python python27\scripts\pywin32_postinstall.py -install

      希望对你有帮助!

      【讨论】:

      • 哇,我试过了,cmd返回没有目录文件。所以我打开了文件夹,我注意到 pywin32_post install 不存在,尽管 pip list 说 pywin32 is installed ,这可能表明存在问题。我会尝试重新安装^^
      • 是啊啊啊。这是一个 pywin32 安装问题,现在我可以爬取 o/.提请注意
      • 作为提示,@ViniciusdeCastro,我强烈建议您考虑将virtualenv 与 Python 一起使用,并将每个项目保留在自己的环境中。它将有助于解决此类问题,并消除您正在处理的不同项目之间的版本冲突。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多