create_builder.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. metavar="",
  27. )
  28. spider.add_argument(
  29. "-i",
  30. "--item",
  31. nargs="+",
  32. help="创建item 如 feapder create -i test 则生成test表对应的item。 "
  33. "支持like语法模糊匹配所要生产的表。 "
  34. "若想生成支持字典方式赋值的item,则create -item test 1",
  35. metavar="",
  36. )
  37. spider.add_argument(
  38. "-t", "--table", help="根据json创建表 如 feapder create -t <table_name>", metavar=""
  39. )
  40. spider.add_argument(
  41. "-init", help="创建__init__.py 如 feapder create -init", action="store_true"
  42. )
  43. spider.add_argument("-j", "--json", help="创建json", action="store_true")
  44. spider.add_argument("-sj", "--sort_json", help="创建有序json", action="store_true")
  45. spider.add_argument("-c", "--cookies", help="创建cookie", action="store_true")
  46. spider.add_argument("--params", help="解析地址中的参数", action="store_true")
  47. spider.add_argument(
  48. "--setting", help="创建全局配置文件" "feapder create --setting", action="store_true"
  49. )
  50. # 指定数据库
  51. spider.add_argument("--host", type=str, help="mysql 连接地址", metavar="")
  52. spider.add_argument("--port", type=str, help="mysql 端口", metavar="")
  53. spider.add_argument("--username", type=str, help="mysql 用户名", metavar="")
  54. spider.add_argument("--password", type=str, help="mysql 密码", metavar="")
  55. spider.add_argument("--db", type=str, help="mysql 数据库名", metavar="")
  56. args = spider.parse_args()
  57. if args.host:
  58. setting.MYSQL_IP = args.host
  59. if args.port:
  60. setting.MYSQL_PORT = int(args.port)
  61. if args.username:
  62. setting.MYSQL_USER_NAME = args.username
  63. if args.password:
  64. setting.MYSQL_USER_PASS = args.password
  65. if args.db:
  66. setting.MYSQL_DB = args.db
  67. if args.item:
  68. item_name, *support_dict = args.item
  69. support_dict = bool(support_dict)
  70. CreateItem().create(item_name, support_dict)
  71. elif args.spider:
  72. spider_name, *spider_type = args.spider
  73. if not spider_type:
  74. spider_type = 1
  75. else:
  76. spider_type = spider_type[0]
  77. try:
  78. spider_type = int(spider_type)
  79. except:
  80. raise ValueError("spider_type error, support 1, 2, 3")
  81. CreateSpider().create(spider_name, spider_type, None)
  82. elif args.project:
  83. CreateProject().create(args.project)
  84. elif args.table:
  85. CreateTable().create(args.table)
  86. elif args.init:
  87. CreateInit().create()
  88. elif args.json:
  89. CreateJson().create()
  90. elif args.sort_json:
  91. CreateJson().create(sort_keys=True)
  92. elif args.cookies:
  93. CreateCookies().create()
  94. elif args.setting:
  95. CreateSetting().create()
  96. elif args.params:
  97. CreateParams().create()
  98. if __name__ == "__main__":
  99. main()