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