加入添加scrapy项目

This commit is contained in:
marvzhang
2020-02-20 17:33:45 +08:00
parent 533dd0c8c2
commit 1ddac86fe1
2 changed files with 37 additions and 2 deletions

View File

@@ -187,19 +187,33 @@ func PutSpider(c *gin.Context) {
// 将FileId置空
spider.FileId = bson.ObjectIdHex(constants.ObjectIdNull)
// 创建爬虫目录
// 爬虫目录
spiderDir := filepath.Join(viper.GetString("spider.path"), spider.Name)
// 赋值到爬虫实例
spider.Src = spiderDir
// 移除已有爬虫目录
if utils.Exists(spiderDir) {
if err := os.RemoveAll(spiderDir); err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
}
// 生成爬虫目录
if err := os.MkdirAll(spiderDir, 0777); err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
spider.Src = spiderDir
// 如果为 Scrapy 项目,生成 Scrapy 项目
if spider.IsScrapy {
if err := services.CreateScrapyProject(spider); err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
}
// 添加爬虫到数据库
if err := spider.Add(); err != nil {

View File

@@ -145,6 +145,27 @@ func CreateScrapySpider(s model.Spider, name string, domain string) (err error)
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
log.Errorf(err.Error())
log.Errorf("stdout: " + stdout.String())
log.Errorf("stderr: " + stderr.String())
debug.PrintStack()
return err
}
return
}
func CreateScrapyProject(s model.Spider) (err error) {
var stdout bytes.Buffer
var stderr bytes.Buffer
cmd := exec.Command("scrapy", "startproject", s.Name, s.Src)
cmd.Dir = s.Src
cmd.Stdout = &stdout
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
log.Errorf(err.Error())
log.Errorf("stdout: " + stdout.String())
log.Errorf("stderr: " + stderr.String())
debug.PrintStack()
return err
}