ImportError: cannot import name xx (scrapy爬虫之xx_spider.py和xxItem.py文件中import出错的问题)

在使用Scrapy爬虫时遇到ImportError:'cannot import name jianshuItem'的问题。解决方法是在xx_spider.py中正确导入items模块,格式为:from 项目名.items import 类名+Item,例如项目名为jianshu,类名为Jianshu,则导入语句应为:from jianshu.items import JianshuItem。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

ImportError:“ImportError: cannot import name jianshuItem”

[root@Uu jianshu]# scrapy crawl jianshu
Traceback (most recent call last):
  File "/usr/bin/scrapy", line 11, in <module>
    sys.exit(execute())
  File "/usr/lib64/python2.7/site-packages/scrapy/cmdline.py", line 149, in execute
    cmd.crawler_process = CrawlerProcess(settings)
  File "/usr/lib64/python2.7/site-packages/scrapy/crawler.py", line 249, in __init__
    super(CrawlerProcess, self).__init__(settings)
  File "/usr/lib64/python2.7/site-packages/scrapy/crawler.py", line 137, in __init__
    self.spider_loader = _get_spider_loader(settings)
  File "/usr/lib64/python2.7/site-packages/scrapy/crawler.py", line 336, in _get_spider_loader
    return loader_cls.from_settings(settings.frozencopy())
  File "/usr/lib64/python2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings
    return cls(settings)
  File "/usr/lib64/python2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__
    self._load_all_spiders()
  File "/usr/lib64/python2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders
    for module in walk_modules(name):
  File "/usr/lib64/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules
    submod = import_module(fullpath)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/BS/scrapy/jianshu/jianshu/spiders/jianshu_Spider.py", line 2, in <module>
    from jianshu.items import jianshuItem
ImportError: cannot import name jianshuItem

 解决问题,过程如下:

 

[root@Uu jianshu]# cat items.py
# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class JianshuItem(scrapy.Item):
    # define the fields for your item here like:
    title = scrapy.Field()
    url = scrapy.Field()
    author = scrapy.Field()
    readNum = scrapy.Field()
    commentNum = scrapy.Field()
    likeNum = scrapy.Field()
~
~	
"items.py" 18L, 420C written
[root@Uu spiders]# vi jianshu_Spider.py
import scrapy
from jianshu.items import JianshuItem

class jianshu_spider(scrapy.Spider):
        name = 'jianshu'
        allowed_domains = ['www.jianshu.com']
        start_urls = ['http://www.jianshu.com/top/monthly']

        def parse(self , response):
                item = JianshuItem()
                selector = Selector(response)
                selector.xpath('//ul[@class="article-list thumbnails"]/li')
                for article in articles:
                        title = article.xpath('//div/h4/a/text()').extract()
                        url = article.xpath('//div/h4/a/@href').extract()
                        author = article.xpath('//div/p/a/text()').extract()
                item['title'] = title
                item['url'] = url
                item['author'] = author
                yield item

~
~
~
~
~
"jianshu_Spider.py" 21L, 625C written

 解决思路:

解决xx_spider.py中的  from   项目名.items   import   item.py中class的名字+Item
如项目名为jianshu,item.py中class名字为Jianshu,则,此处为:from jianshu.items import JianshuItem ,否则将会报出如上错误。

 

(scrapy_env) C:\Users\Lenovo\nepu_spider>scrapy crawl nepu Traceback (most recent call last): File "D:\annaCONDA\Scripts\scrapy-script.py", line 10, in <module> sys.exit(execute()) ^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\cmdline.py", line 157, in execute cmd.crawler_process = CrawlerProcess(settings) ^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 318, in __init__ super().__init__(settings) File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 190, in __init__ self.spider_loader = self._get_spider_loader(settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 184, in _get_spider_loader return loader_cls.from_settings(settings.frozencopy()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 69, in from_settings return cls(settings) ^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 24, in __init__ self._load_all_spiders() File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 53, in _load_all_spiders for module in walk_modules(name): ^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\utils\misc.py", line 87, in walk_modules submod = import_module(fullpath) ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1204, in _gcd_import File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\Lenovo\nepu_spider\nepu_spider\spiders\nepu.py", line 2, in <module> from nepu_Spider.items import NepuSpiderItem # 导入定义好的 Item ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'nepu_Spider' (scrapy_env) C:\Users\Lenovo\nepu_spider>scrapy crawl nepu Traceback (most recent call last): File "D:\annaCONDA\Scripts\scrapy-script.py", line 10, in <module> sys.exit(execute()) ^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\cmdline.py", line 157, in execute cmd.crawler_process = CrawlerProcess(settings) ^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 318, in __init__ super().__init__(settings) File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 190, in __init__ self.spider_loader = self._get_spider_loader(settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\crawler.py", line 184, in _get_spider_loader return loader_cls.from_settings(settings.frozencopy()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 69, in from_settings return cls(settings) ^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 24, in __init__ self._load_all_spiders() File "D:\annaCONDA\Lib\site-packages\scrapy\spiderloader.py", line 53, in _load_all_spiders for module in walk_modules(name): ^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\site-packages\scrapy\utils\misc.py", line 87, in walk_modules submod = import_module(fullpath) ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\annaCONDA\Lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1204, in _gcd_import File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "C:\Users\Lenovo\nepu_spider\nepu_spider\spiders\nepu.py", line 3, in <module> from nepu_spider.items import NewsItem ImportError: cannot import name 'NewsItem' from 'nepu_spider.items' (C:\Users\Lenovo\nepu_spider\nepu_spider\items.py)
07-05
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值