python - 为什么会报错from tutorial.items import DmozItem会报错?
迷茫
迷茫 2017-04-17 13:48:51
[Python讨论组]

items.py文件

#-*- coding: utf-8 -
import scrapy

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

dmo_spider.py文件

import scrapy

from tutorial.items import DmozItem

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/Computers/Programming/Languages/Python/Resources/"
]
def parse(self, response):
for sel in response.xpath('//ul/li'):
item = DmozItem()
item['title']= sel.xpath('a/text()').extract()
item['ink'] = sel.xpath('a/@href').extract()
item['desc']= sel.xpath('text()').extract()
yield item
为什么在dmzo_spider.py文件加入

from tutorial.items import DmozItem

执行scrapy crawl dmoz -o items.json时会报错,
如果去掉的话就会有 item = DmozItem()
exceptions.NameError: global name 'DmozItem' is not defined
的报错

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
天蓬老师

建议你把报错信息贴出来

伊谢尔伦

请问题主后来是怎样解决这个问题的

ringa_lee

我也是因为这个错误查到这里来的。我来贴一个,希望对后面看到的同学有用。
提示错误为你没有引入定义DmozItem()这个函数的文件!
在你的DEMOSPIDE.PY文件前面加上如下内容:
from tutorial.items import DmozItem or

from tutorial.items import *

PHP中文网

路径有问题,我的方法是

import sys
sys.path.append("..")
天蓬老师

items.py加一句from scrapy.item import Item, Field

PHPz

朋友 看下你的items.py的文件 里面的class的名字是什么?
教程里面的是TutorialItem 但是教程代码上让你引入的是DmozItem 所以 改下名字咯~

ringa_lee

终于搞明白了:project目录问题。
我使用的编辑器是eclipse,这个scrapy工程不能套在eclipse的工程里。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号