@@ -21,8 +21,14 @@ def import_module(module_url):
2121 return importlib .import_module (module_url )
2222
2323
24- def load_spider (script_path ):
24+ def load_spider (script_path , env ):
2525 """动态加载指定路径的 Python 脚本并实例化 Spider 类"""
26+ try :
27+ env = json .loads (env )
28+ except json .JSONDecodeError :
29+ # 保持原始字符串
30+ pass
31+
2632 try :
2733 script_name = os .path .basename (script_path )[:- 3 ]
2834 print ('load_spider:' , script_name )
@@ -32,8 +38,9 @@ def load_spider(script_path):
3238 if not hasattr (module , 'Spider' ):
3339 raise AttributeError (f"Script { script_path } does not contain a 'Spider' class" )
3440
41+ proxyUrl = env .get ('proxyUrl' ) if isinstance (env , dict ) else ''
3542 # 实例化 Spider
36- spider = module .Spider ()
43+ spider = module .Spider (t4_api = proxyUrl )
3744 return spider
3845
3946 except Exception as e :
@@ -54,7 +61,7 @@ def t4_spider_init(spider, ext=''):
5461 module_names = []
5562 for lib in depends :
5663 try :
57- module = import_module (lib ).Spider ()
64+ module = import_module (lib ).Spider (t4_api = ext )
5865 modules .append (module )
5966 module_names .append (lib )
6067 except Exception as e :
@@ -68,7 +75,7 @@ def t4_spider_init(spider, ext=''):
6875 return spider , result
6976
7077
71- def call_spider_method (spider , method_name , args ):
78+ def call_spider_method (spider , method_name , env , args ):
7279 """调用 Spider 实例的指定方法"""
7380 invoke_method_name = method_dict .get (method_name ) or method_name
7481 try :
@@ -87,18 +94,25 @@ def call_spider_method(spider, method_name, args):
8794 except json .JSONDecodeError :
8895 # 保持原始字符串
8996 parsed_args .append (arg )
97+ try :
98+ env = json .loads (env )
99+ except json .JSONDecodeError :
100+ # 保持原始字符串
101+ pass
90102
91103 print (f'parsed_args:{ parsed_args } ' )
92104
93105 if method_name == 'init' :
94- extend = parsed_args [0 ] if parsed_args else ''
106+ extend = parsed_args [0 ] if parsed_args and isinstance ( parsed_args , list ) else ''
95107 spider , result = t4_spider_init (spider , extend )
96108 # result = spider.init(modules)
97109 return result
98110 else :
99111 if not hasattr (spider , '_init_ok_' ):
100112 # spider,_ = t4_spider_init(spider,*parsed_args) # 需要传extend参数,暂时没有好办法
101- extend = parsed_args [0 ] if parsed_args else ''
113+ # extend = parsed_args[0] if parsed_args and isinstance(parsed_args,list) else ''
114+ # extend = env.get('ext','')
115+ extend = env .get ('ext' ) if isinstance (env , dict ) else ''
102116 spider , _ = t4_spider_init (spider , extend )
103117 method = getattr (spider , invoke_method_name )
104118 result = method (* parsed_args )
@@ -125,10 +139,11 @@ def main():
125139 return
126140 script_path = sys .argv [1 ]
127141 method_name = sys .argv [2 ]
128- args = sys .argv [3 :]
142+ env = sys .argv [3 ]
143+ args = sys .argv [4 :]
129144 print (f'script_path:{ script_path } ,method_name:{ method_name } ' )
130- spider = load_spider (script_path )
131- result = call_spider_method (spider , method_name , args )
145+ spider = load_spider (script_path , env )
146+ result = call_spider_method (spider , method_name , env , args )
132147 print (result )
133148
134149
0 commit comments