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. input number类型去掉箭头和禁用滚轮

    input number类型可以输入整型.浮点型.科学计数法的数据 禁用滚轮,在input标签内添加onmouseWheel="return false" <input ty ...

  2. Vue解决后台传过来的时间展示时带T

    用空格替换: {{scope.row.ctime.toLocaleString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')}} 参考作者:https: ...

  3. SAP BADI总结

    SAP里标准拼法是BAdI,区分大小写.太麻烦,文章里全用大写. BADI技术的底层是接口,类等面向对象开发的内容. Classic BADI是一个BADI包了一个接口.实现它的话,需要一个接口的实现 ...

  4. 网络安全(中职组)-B模块:Windows操作系统渗透测试

    任务环境说明: 服务器场景:teltest 服务器场景操作系统:Windows7 (封闭靶机) 1.通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该 ...

  5. Python学习笔记--异常+模块+包

    异常的捕获 基本语法: 示例: 捕获指定异常 基本语法:--必写 示例: 捕获多个异常 示例: 捕获所有异常 示例: 异常else--可写可不写 示例: 异常finally(无论是否出现异常,都会去执 ...

  6. Z 函数

    简单记一下,避免忘记. z 函数 对于字符串 \(S\),我们将 \(z(i)\) 定义为从 \(i\) 开始的后缀与 \(S\) 的最长公共前缀的长度. \(O(n)\) 求出 z 函数 我们添加一 ...

  7. 利用selenium爬取前程无忧招聘数据

    1.背景介绍 selenium通过驱动浏览器,模拟浏览器的操作,进而爬取数据.此外,还需要安装浏览器驱动,相关步骤自行解决. 2.导入库 import csv import random import ...

  8. 第四朵“云”!全托管的时序数据云平台 TDengine Cloud 正式支持阿里云

    3 月 13 日,全托管的时序数据处理云服务平台 TDengine Cloud 正式支持阿里云,这是继 Microsoft Azure.AWS.Google Cloud 后 TDengine Clou ...

  9. Maven 的仓库、周期和插件

    一.Maven 仓库 在 Maven 的世界中,任何一个依赖.插件或者项目构建的输出,都可以称为构建.Maven 在某个统一的位置存储所有项目的共享的构建,这个统一的位置,我们就称之为仓库.任何的构建 ...

  10. broadcom Ethernet BCM57412 驱动更新记录(dkms方式)

    一 背景 现场Dell R740xd2机器使用网卡Broadcom 57412 10Gb SFP+,固件版本22.21.06.80.bnxt_en.ko内核模块是该网卡的驱动,我们默认的驱动版本为1. ...