create_builder.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on 2021/2/8 11:21 上午
  4. ---------
  5. @summary: 生成器
  6. ---------
  7. @author: Boris
  8. @email: boris_liu@foxmail.com
  9. """
  10. import argparse
  11. import feapder.setting as setting
  12. from feapder.commands.create import *
  13. def main():
  14. spider = argparse.ArgumentParser(description="生成器")
  15. spider.add_argument(
  16. "-p", "--project", help="创建项目 如 feapder create -p <project_name>", metavar=""
  17. )
  18. spider.add_argument(
  19. "--s",
  20. "--spider",
  21. nargs="+",
  22. help="创建爬虫\n"
  23. "如 feapder create -s <spider_name> <spider_type> "
  24. "spider_type=1 AirSpider; "
  25. "spider_type=2 Spider; "
  26. "spider_type=3 BatchSpider;",
  27. metavar="",
  28. )
  29. spider.add_argument(
  30. "-i",
  31. "--item",
  32. nargs="+",
  33. help="创建item 如 feapder create -i test 则生成test表对应的item。 "
  34. "支持like语法模糊匹配所要生产的表。 "
  35. "若想生成支持字典方式赋值的item,则create -item test 1",
  36. metavar="",
  37. )
  38. spider.add_argument(
  39. "-t", "--table", help="根据json创建表 如 feapder create -t <table_name>", metavar=""
  40. )
  41. spider.add_argument(
  42. "-init", help="创建__init__.py 如 feapder create -init", action="store_true"
  43. )
  44. spider.add_argument("-j", "--json", help="创建json", action="store_true")
  45. spider.add_argument("-sj", "--sort_json", help="创建有序json", action="store_true")
  46. spider.add_argument("-c", "--cookies", help="创建cookie", action="store_true")
  47. spider.add_argument("--params", help="解析地址中的参数", action="store_true")
  48. spider.add_argument(
  49. "--setting", help="创建全局配置文件" "feapder create --setting", action="store_true"
  50. )
  51. # 指定数据库
  52. spider.add_argument("--host", type=str, help="mysql 连接地址", metavar="")
  53. spider.add_argument("--port", type=str, help="mysql 端口", metavar="")
  54. spider.add_argument("--username", type=str, help="mysql 用户名", metavar="")
  55. spider.add_argument("--password", type=str, help="mysql 密码", metavar="")
  56. spider.add_argument("--db", type=str, help="mysql 数据库名", metavar="")
  57. args = spider.parse_args()
  58. if args.host:
  59. setting.MYSQL_IP = args.host
  60. if args.port:
  61. setting.MYSQL_PORT = int(args.port)
  62. if args.username:
  63. setting.MYSQL_USER_NAME = args.username
  64. if args.password:
  65. setting.MYSQL_USER_PASS = args.password
  66. if args.db:
  67. setting.MYSQL_DB = args.db
  68. if args.item:
  69. item_name, *support_dict = args.item
  70. support_dict = bool(support_dict)
  71. CreateItem().create(item_name, support_dict)
  72. elif args.spider:
  73. spider_name, *spider_type = args.spider
  74. if not spider_type:
  75. spider_type = 1
  76. else:
  77. spider_type = spider_type[0]
  78. try:
  79. spider_type = int(spider_type)
  80. except:
  81. raise ValueError("spider_type error, support 1, 2, 3")
  82. CreateSpider().create(spider_name, spider_type)
  83. elif args.project:
  84. CreateProject().create(args.project)
  85. elif args.table:
  86. CreateTable().create(args.table)
  87. elif args.init:
  88. CreateInit().create()
  89. elif args.json:
  90. CreateJson().create()
  91. elif args.sort_json:
  92. CreateJson().create(sort_keys=True)
  93. elif args.cookies:
  94. CreateCookies().create()
  95. elif args.setting:
  96. CreateSetting().create()
  97. elif args.params:
  98. CreateParams().create()
  99. if __name__ == "__main__":
  100. main()