scrapy 教程中扭曲的严重未处理错误

twisted critical unhandled error on scrapy tutorial

我是编程新手,我正在尝试学习 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()

点列表:

感谢关注,抱歉我的英语不好,这不是我的母语。

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

python python27\scripts\pywin32_postinstall.py -install

希望对您有所帮助!

我没看到你在写入文件时对项目做了什么。但它可能是进口的。如果这不起作用,请尝试此操作,尝试 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)

Scrapy 崩溃:导入错误:没有名为 win32api 的模块

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

简短的回答是你缺少pywin32!

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

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

确保您获得正确的位:32 或 64。在我的例子中,我没有意识到我在我的 64 位机器上安装了 32 位版本的 Python,并且安装程序失败并显示 "Cannot find Python 2.7 installation in registry".我必须安装 32 位版本的 pywin32。一旦我这样做了,scrapy 爬网站点 就起作用了。