mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
加入添加scrapy项目
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user