|
@@ -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()
|