我尽量使用函数式编程,因为这样更方便,更容易阅读和纠正。好吧,这是为了解释我的源代码的目的。你知道吗
scrapy_project
|_ scrapy.cfg
|_ scrapy_project
|_ __init__.py
|_ module_parsing.py
|_ module_correction.py
|_ items.py
|_ ...
|_ spiders
|_ crawling_spider.py
module_parsing.py
和module_correction.py
是我自己定制的模块。你知道吗
在module_parsing.py
我有这样的函数。你知道吗
import re
import datetime as dt
import dateparser
def noms_entraineurs(response, arg_disc):
"""Return a list of names"""
ent = parse instructions
return ent
等等。你知道吗
因为我不是完美的,我做了一些解析错误,并想纠正它,这就是为什么对于我的spider的一个特定方法,我考虑创建一个函数,其中包含一个字典,字段作为键,函数(解析函数)作为值。你知道吗
它给出了这样的东西。你知道吗
from .module_parsing import *
def fonction_parse_correction(
field, response, arg_desc, arg_disc, arg_true_false):
dico_fonction_parse = {
'discipline': discipline(arg_desc),
...
'entraineurs' : noms_entraineurs(response,
arg_disc),
...
}
return dico_fonction_parse[field]
像这样,我希望,我只需要写:
fonction_parse_correction(field, response, arg_desc, arg_disc, arg_true_false)
这是我在scrapy shell中尝试的,但是失败了NameError: name 'function_name' is not defined
我在shell中启动scrapy shell https://website.com
导入定制模块后,如Cameron所示,它给出了以下内容。你知道吗
In [1]: import sys
In [2]: sys.path.insert(0,'/home/user/directory_a/.../scrapy_project/scrapy_project')
In [3]: from module_parsing import *
#and it worked well here
...
In [7]: from module_correction import *
...
In [10]: fonction_parse_correction('entraineurs',response,arg_desc,'attele',False)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-10-137e645b094c> in <module>
----> 1 fonction_parse_correction('entraineurs',response,arg_desc,'attele',False)
~/.../scrapy_project/scrapy_project/module_correction.py in fonction_parse_correction(field, response, arg_desc, arg_disc, arg_true_false)
50
51 dico_fonction_parse = {
---> 52 'allocation': allocation_devise(response)[0],
53 'devise': allocation_devise(response)[1],
54 'hippodrome':hippodrome_numreu_prix(response)[0],
NameError: name 'allocation_devise' is not defined
所以,我想知道为什么我得到这个NameError
,而我在module_correction.py
中显式导入module_parsing.py
,以获得所有函数及其名称。你知道吗
注意事项: Ubuntu 18.04、Scrapy 1.5.2、Python 3.7.1
目前没有回答
相关问题 更多 >
编程相关推荐