scrapy教程中扭曲的关键未处理错误

时间:2015-07-15 19:37:12

标签: python-2.7 scrapy scrapy-spider

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

点子列表:

  • bootstrap-admin(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-setup(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)
  • mechanize(0.2.5)
  • MySQL-python(1.2.4)
  • pbr(0​​.10.8)
  • Pillow(2.7.0)
  • pip(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)
  • selenium(2.44.0)
  • service-identity(14.0.0)
  • setuptools(18.0.1)
  • 六(1.9.0)
  • sqlparse(0.1.15)
  • stevedore(1.3.0)
  • 扭曲(15.2.1)
  • virtualenv(1.11.6)
  • virtualenv-clone(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)

因为我的英语不好而引起注意和讽刺,不是我的母语。

4 个答案:

答案 0 :(得分:2)

我也开始学习scrapy并遇到与你相同的问题。 在经历了一个下午的努力之后,我终于找到了它,因为pywin32模块只能在没有安装的情况下下载。 您可以尝试在cmd中输入以下命令来完成pywin32模块安装并再次尝试抓取:

python python27 \ scripts \ pywin32_postinstall.py -install

我希望它会有所帮助!

答案 1 :(得分:2)

简短的回答是你缺少pywin32!

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

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

确保你得到正确的位:32或64.在我的情况下,我没有意识到我在我的64位机器上安装了32位版本的Python而安装程序失败并且#34;找不到Python 2.7在注册表中安装"。我不得不安装32位版本的pywin32。一旦我这样做, scrapy抓取网站就可以了。

答案 2 :(得分:0)

我不会看到你在处理文件时对项目做了什么。但它的进口可能。尝试这个,如果这不起作用尝试,pip安装pywin --update和pip安装Twisted --update,应该重新安装任何损坏的文件。 另外我不知道它是否存在Stack的问题,但你有一些错位的身份。     来自scrapy.spiders导入Spider

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)

答案 3 :(得分:0)

Scrapy崩溃:ImportError:没有名为win32api的模块

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