| 
					
				 | 
			
			
				@@ -0,0 +1,50 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import argparse 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from importlib import import_module 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+PROVINCE_MODULES = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "shandong": "shandong.selenium_shandong_download", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "guangdong": "guangdong.selenium_guangdong_download", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "guangdong-city": "guangdong.selenium_guangdong_city", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "henan": "henan.selenium_henan_download", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "fujian": "fujian.selenium_fujian_download", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "anhui": "anhui.crawl_gov_anhui_full", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "jiangsu": "jiangsu.gov_commodity_jiangsu_country", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "hebei": "hebei.crawl_gov_hebei_full", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "zhejiang": "zhejiang.crawl_gov_zhejiang_full", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "quanguo": "quanguo.selenium_download" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def run_province(name, year=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        module = import_module(PROVINCE_MODULES[name]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print(f"✅ 正在运行 {name} 模块...") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # 构造模拟的 sys.argv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fake_argv = ['script_name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if year is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fake_argv.extend(['--year', str(year)]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sys.argv = fake_argv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        module.main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print(f"❌ {name} 执行失败: {e}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    parser = argparse.ArgumentParser(description="跨省数据采集器") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    group = parser.add_mutually_exclusive_group(required=True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    group.add_argument('--province', '-p', choices=PROVINCE_MODULES.keys(), help='指定省份') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    group.add_argument('--all', action='store_true', help='运行所有省份') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    parser.add_argument('--year', type=int, help='年份(非必填)') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    args = parser.parse_args() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if args.province: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        run_province(args.province, args.year) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif args.all: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for name in PROVINCE_MODULES: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            run_province(name, args.year) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == "__main__": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    main() 
			 |