golang 调用python
平常自己看电影的时候,老是在各个平台跳转,很是麻烦和不方便,作为程序员,都是比较懒的,毕竟就是懒才有了各种便民产品的嘛
基于Qt给自己做了一个视频播放器,但是需要使用python爬虫爬取搜索的视频。但是服务器在开始制作时,选择的是golang,爬虫嘛基本都是基于Python的。所以这里就需要服务器golang上调用python爬虫脚本。
但是在操作上却遇到了一些问题,这里记录下。
首先是golang调用python的代码
args := []string{"./NetBoxApp/Python_Spiders/VideoSpider.py", cmd}
out, err := exec.Command("python", args...).Output()
if err != nil {
Log.Error("CmdPythonVideoSpider ==> %s", err)
return
}
data := &[]interface{}{}
err = json.Unmarshal(out, data)
if err != nil {
Log.Error("CmdPythonVideoSpider json.Unmarshal( ==> %s", err)
return
}
msgData := &pb.VideoSearchResult_GC{}
for i:=0;i < len(*data);i++{
t := (*data)[i].(map[string]interface{})
if nil != t {
msg := &pb.VideoSearchResult{}
msg.VideoName = t["title"].(string)
msg.Actors = t["actor"].(string)
msg.Director = t["director"].(string)
msg.PicUrl = t["pic"].(string)
msg.VideoUrl = t["href"].(string)
msgData.Results = append(msgData.Results,msg)
}
}
m._Logic.SendToClientMsg(pb.EC_Code_EC_VideoSearchResult_GC,s.GetUID(),msgData)
golang调用python简单基本就是这样的
python 引用了这些库,有的是python中自带的,有的属于第三方的
import requests
import base64
from bs4 import BeautifulSoup
import sys
import json
直接调用就会出现,
CmdPythonVideoSpider ==> exit status =1 的错误
这里我大胆猜测是,第三方库找不到报错的。
验证猜想
def AddFunc(a,b):
return a+b
这里在golang中调用这个函数一切成功,于是我将python的第三方库复制到了python脚本目录