cli.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import argparse
  2. from importlib import import_module
  3. import sys
  4. PROVINCE_MODULES = {
  5. "shandong": "shandong.selenium_shandong_download",
  6. "guangdong": "guangdong.selenium_guangdong_download",
  7. "guangdong-city": "guangdong.selenium_guangdong_city",
  8. "henan": "henan.selenium_henan_download",
  9. "fujian": "fujian.selenium_fujian_download",
  10. "anhui": "anhui.crawl_gov_anhui_full",
  11. "jiangsu": "jiangsu.gov_commodity_jiangsu_country",
  12. "hebei": "hebei.crawl_gov_hebei_full",
  13. "zhejiang": "zhejiang.crawl_gov_zhejiang_full",
  14. "quanguo": "quanguo.selenium_download"
  15. }
  16. def run_province(name, year=None):
  17. try:
  18. module = import_module(PROVINCE_MODULES[name])
  19. print(f"✅ 正在运行 {name} 模块...")
  20. # 构造模拟的 sys.argv
  21. fake_argv = ['script_name']
  22. if year is not None:
  23. fake_argv.extend(['--year', str(year)])
  24. sys.argv = fake_argv
  25. module.main()
  26. except Exception as e:
  27. print(f"❌ {name} 执行失败: {e}")
  28. def main():
  29. parser = argparse.ArgumentParser(description="跨省数据采集器")
  30. group = parser.add_mutually_exclusive_group(required=True)
  31. group.add_argument('--province', '-p', choices=PROVINCE_MODULES.keys(), help='指定省份')
  32. group.add_argument('--all', action='store_true', help='运行所有省份')
  33. parser.add_argument('--year', type=int, help='年份(非必填)')
  34. args = parser.parse_args()
  35. if args.province:
  36. run_province(args.province, args.year)
  37. elif args.all:
  38. for name in PROVINCE_MODULES:
  39. run_province(name, args.year)
  40. if __name__ == "__main__":
  41. main()