import shutil,os

修改settings.py
def config(scrapy_path,project_name):
judge=input("是否自动修改配置?是:yes|y 否:no|n\n请选择:")
if judge=='yes'or judge=='y'or judge== '是':
setting_path=f'{scrapy_path}/{project_name}/{project_name}/settings.py'
#修改items配置
with open(setting_path,"rt+",encoding="utf-8") as fp:
lines=fp.readlines()
for i in range(len(lines)):
lines[i]=lines[i].replace('ROBOTSTXT_OBEY = True','ROBOTSTXT_OBEY = False')
if "ITEM_PIPELINES" in lines[i] or "DOWNLOADER_MIDDLEWARES" in lines[i]:
lines[i]=lines[i].strip('# ')
lines[i+1] = lines[i+1].strip('# ')
lines[i+2] = lines[i+2].strip('# ')
with open(setting_path,"wt+",encoding="utf-8") as fp:
text="from fake_useragent import UserAgent\nua=UserAgent()\nUSER_AGENT = ua.ie\nLOG_LEVEL='ERROR'\n"
fp.write(text)
for line in lines:
fp.write(line)
print("配置成功")
else:
print("默认配置")

def INPUT():
project_name=input("请输入scrapy项目名:").split()[0]
spider_name = input("请输入爬虫名称:").split()[0]
if project_name==spider_name:
print('项目名和爬虫名不能相同,请重新输入!')
os.system('cls')
return INPUT()
else:
main_url = input("请输入网址:").split()[0]
name = {
'project_name': project_name,
'spider_name': spider_name,
'main_url':main_url,
}
return name

#创建主体项目文件
def start_project(scrapy_path,project_name,spider_name,main_url):
# 创建scrapy工程
man1 = f'scrapy startproject {project_name}'
os.system(man1)
# 创建爬虫文件
man2 = f'scrapy genspider {spider_name} {main_url}'
os.system(man2)
# 移动爬虫文件
shutil.move(f'{scrapy_path}/{spider_name}.py',
f'{scrapy_path}/{project_name}/{project_name}/spiders/{spider_name}.py')
# 创建主文件
with open(f'{scrapy_path}/{project_name}/main.py', "w+", encoding="utf-8") as fp:
text = f"from scrapy import cmdline\ncmdline.execute('scrapy crawl {spider_name}'.split())"
fp.write(text)
print("scrapy框架创建成功!".strip())

if __name__ == "__main__":
scrapy_path = os.getcwd()
name=INPUT()
project_name =name['project_name']
spider_name =name['spider_name']
main_url=name['main_url']
start_project(scrapy_path,project_name,spider_name,main_url)
config(scrapy_path, project_name)
#文件介绍
#该框架默认创建在该py文件下
#mian.py可直接执行scrapy框架,不用输入繁琐的cmd命令
#直接对框架中的文件进行修改即可

几行代码教你快速创建scrapy项目,非常实用建议收藏!的更多相关文章

  1. iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果

    8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...

  2. 爬虫学习笔记(2)--创建scrapy项目&&css选择器

    一.手动创建scrapy项目---------------- 安装scrapy: pip install -i https://pypi.douban.com/simple/  scrapy    1 ...

  3. pycharm创建scrapy项目教程及遇到的坑

    最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理 ...

  4. scrapy(一)--Pycharm创建scrapy项目

    1.环境 操作系统:windows10. python版本:python3.6,Anaconda(将Anaconda3\Scripts;路径添加到环境变量Path中) pycharm:pycharm2 ...

  5. 2springboot:快速创建springboot项目

    使用IDEA快速创建springboot项目流程: 创建新的项目选择 项目的命名以及包名 需要什么包就导入什么包 进行测试的单元 <dependency> <groupId>o ...

  6. 终端创建scrapy项目时报错(转)

    在终端创建scrapy项目时报错 PS D:\scrapy_project> scrapy startproject fangFatal error in launcher: Unable to ...

  7. Spring-boot(一)通过向导快速创建Spring-boot项目

    通过向导快速创建Spring-boot项目 创建步骤: 选择Spring Initializr 填写组织和模块名 选择对应的模块 注:这里左侧的模块比较多,玩家可以根据自己的实际需要自由选择,此处暂时 ...

  8. 【快学springboot】1.快速创建springboot项目

    若图片查看异常,请前往掘金查看:https://juejin.im/post/5d00e793f265da1b614ff10b 使用spring initialize工具快速创建springboot项 ...

  9. 快速创建 Vue 项目

    转载:https://www.jianshu.com/p/c7df292915e7 为了便于 Vue 项目的管理, Vue 团队官方开发了 vue-cli 工具. 本文将带您使用 vue-cli 快速 ...

  10. 在线快速创建SpringBoot项目

    都2020年了,你还在手动创建SpringBoot项目吗?今天教你在线快速创建一个SpringBoot项目,瞬间高大上有木有! 进入正题,首先打开创建SpringBoot的官网:https://sta ...

随机推荐

  1. java中的4种引用和GC Roots

    https://juejin.im/post/5d06de9d51882559ee6f4212?utm_source=gold_browser_extension 1.首先,四种引用如下: Final ...

  2. Java学习笔记-封装Java Util包Base64方法

    懒人菜鸟入门Java系列-习惯性封装常用方法,方便开发过程中调用   注释: Java版本-1.8 1 * @Author wuwenchao 2 * @Version 1.0.0 3 * @Date ...

  3. 【其他】etcd

    配置 node1 name: etcd-1 data-dir: /data/etcd/node1 listen-client-urls: http://127.0.0.1:6701 advertise ...

  4. CentOS 7 时区设置 EST和CST设置

    1. https://blog.csdn.net/allway2/article/details/102995747 CentOS 7 时区设置# timedatectl status      Lo ...

  5. Spring--事务角色+事务属性

    事务管理员 发起事务方,在Spring中通常指代业务层开启事务的方法 也就是相当于这个: 事务协调员 加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法 也就是相当于这个: 事务相关配 ...

  6. PMP常见会议小结

    转载请注明出处: 会议是吸引项目团队和其他干系人参与的重要方式.它们是整个项目的主要沟通方式. 一. 项目启动会 召开时间:是启动阶段结束时召开的会议. 主要任务:发布项目章程,并任命项目经理,赋予项 ...

  7. 【Jenkins】linux与windows环境下的安装步骤

    linux环境: <1>安装jdk: https://www.cnblogs.com/poloyy/p/12801792.htmljdk (参考) <2>环境清理 find / ...

  8. Java面试——SQL语句题

    更多内容,前往IT-BLOG 一.行转列问题 现有表格A,按照以下格式排列: 姓名 收入类型 收入金额 Tom 年奖金 5w Tom 月工资 10k Jack 年奖金 8w Jack 月工资 12k ...

  9. odoo 开发入门教程系列-模型和基本字段

    模型和基本字段 在上一章的末尾,我们创建一个odoo模块.然而,此时它仍然是一个空壳,不允许我们存储任何数据.在我们的房地产模块中,我们希望将与房地产相关的信息(名称(name).描述(descrip ...

  10. Maven常用依赖包简单

    Maven官方仓库:Maven Repository: junit » junit (mvnrepository.com) Mysql 1 <!--Mysql--> 2 <depen ...