程序为什么执行到这里就停了:if isinstance(item, AnItem): 这句明明是真,到这里就不执行了

我在items 里定义了 AnItem

也在spider.py里用 item = AnItem() 定义了.

为什么上面的:if isinstance(item, AnItem):  这句后面的就不执行了.

说明:if isinstance(item, AnItem): 是假, 不知道为什么?

我看别人的代码.还有网上的例子都是这样写的

不知道我写的哪里不对?

class AnPipeline(object):
    def process_item(self, item, spider):
        print ('process_item1111111111111111111111111111')
        if isinstance(item, AnItem):
            print ('process_item222222222222222222222222222')
            title = item['title']
            content = item['content']
            Sql.insert_data_all(title, content)
            print (u'存完一条信息aaaaaaaaaaaa')
            return item
阅读 2k
评论
    2 个回答
    • 134

    if isinstance(item, AnItem):

        print ('zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz')
    else:
        print ('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj')
    

    在pipilines.py 里用上面语句测试了一下:输出 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
    不知道哪里出了问题了.
    按正常的逻辑在 spiders.py里定义了: item = ZbaqcnItem()
    该导入的都导了.那在在pipilines.py. 应该是真的啊?

    现在我感觉应该是import item 有问题?

    我在anspiders.py里这样导入:
    from aqccncn.items import AnItem
    总是提示出错.ImportError: No module named items
    在网上搜了半天也没找到可行的解决办法.
    只好用下面的方法.

    然后我在spiders 文件里建了个items.py
    用from items import AnItem 这样导入的.

    然后就出现后来的if isinstance(item, AnItem):  是False了.

    难道是这里的原因?

    最后--------------------------------
    2016/04/29 18:04修改:

    -----------------------

    多谢各位.已经解决.原来刚开始的时候from aaaa.items import AnItem 总是提示出错.我又在spiders 文件里建了一个items.py 这样在导入的不是同一个items.py 所以那个AnItem() 也不是同一个.

    但是还有一个问题:

    如果是在 与 spiders 文件夹   settgins.py 文件同级的目录里建 items.py 文件.为什么这样导入:  from AnAnAn.items import AnItem 就会提示:ImportError:No module named AnAnAn.items 这提示?
    在 AnAnAn 文件夹里明明有默认生成的那个 items.py 也在里面添加了相应的代码.

    这又是哪里有问题? 多谢.