1
woshixiaohao1982 2017-04-29 10:31:35 +08:00
新手别学弱类型语言,很多坑
|
2
ipwx 2017-04-29 11:07:44 +08:00
|
3
imn1 2017-04-29 11:28:24 +08:00
1.你知道 isinstance 是判断什么的么?
2.作用域理清了么? |
5
GitFree 2017-04-29 15:58:08 +08:00
type(item)试下
|
6
cszeus 2017-04-29 15:58:55 +08:00
你的 item 不是 process_item 传进来的参数 item 么,跟你之前 item = AnItem()是同一个么?
|
7
bb2018 OP @ipwx 是的. item 不是 AnItem
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 了. 难道是这里的原因? |
8
bb2018 OP |
9
ryd994 2017-04-29 17:30:14 +08:00 via Android
Python 是执行一段定义后得到一个“ class 对象”
你把同一个定义写两边那能是同一个定义么? |
10
bb2018 OP @ryd994 多谢.一语点醒了.现在就在 spiders 文件夹里放一个 items.py 这样就正常了.
但是还有一个问题, 如果是在 与 spiders 文件夹 settgins.py 文件同级的目录里建 items.py 文件.为什么这样导入: from AnAnAn.items import AnItem 就会提示:ImportError:No module named AnAnAn.items 这提示? 在 AnAnAn 文件夹里明明有默认生成的那个 items.py 也在里面添加了相应的代码. |
11
bb2018 OP |
12
zsz 2017-04-29 21:49:34 +08:00
@bb2018
在 AnAnAn 目录下加一个 __init__.py 空文件 加我们的群问效率更高,一群工程师组建的面向初学者的 Python Linux 学习群,qq 群号:278529278, Php Linux 学习群,qq 群号:476648701, 非商业性质,拒绝广告,只接收真正想学这方面技术的朋友,交流学习,申请请说明来自 v2ex |
13
ipwx 2017-04-30 11:38:28 +08:00
@bb2018 你可能需要学习一下 Python 包管理方式的最佳实践。
我写了这么多年 Python,可以说 Python 的包管理方式,如果你想不踩坑,有且仅有一种。你可以从各种开源项目的代码看出来怎么做,也能找靠谱的 tutorial,比如这个( http://python-guide-pt-br.readthedocs.io/en/latest/writing/structure/) 这种组织结构是各种血泪总结而出的经验。如果你不参考,等你多写几个项目,最后你会发现不得不这么做。 |
14
bb2018 OP @zsz AnAnAn 目录下已经有一个__init__.py 空文件 ,AnAnAn 就是项目名称。会自动生成一个的。
|