电子规范管理系统standardms在linux系统中部署遇到的坑

局域网内用一台闲置的电脑,安装了linux,部署了engineercms,docker和onlyoffice进行项目管理、文档协作,还缺少一利器:电子规范管理。于是请一哥们帮忙编译了我的standardms电子规范管理系统。

第一次编译,还是老问题,源码中,路径是win下的“\\”,到linux系统下是不行的,必须全部改成“/”。

重新编译,在linux系统下运行,新上传的pdf文件可以下载阅览,以前的pdf文件,死活下载不了。

找了很久,怀疑是文件的读写权限,文件夹的读写权限,都不是。

终于发现,原来,用securefx上传文件到linux系统下,中文文件名全被修改了,可是在securefx里却看不出来什么异样。用securecrt在命令行下,列表文件,就发现上传的中文文件名都乱码了。用flashfxp上传就没问题,standardms可以访问。

上网查securefx乱码解决方案,原来是将ini文件的00000最后一个0改为1就行了。

果然,解决了大问题。

电子规范管理系统其实有不少商用的,也有不少网站提供下载,官方的也逐渐放开了电子版的下载了。不过暂时还是犹抱琵琶半遮面,都不是很齐全,自己收集的一些电子规范,在单位里用用,平时解燃眉之急,开审查会,也可以随时通过VPN进入局域网内进行检索,甚是方便。

这个系统开发一个自动更新规范编号有效版本的数据库,根据网络上最新发布的规范编号进行更新,仅仅是更新编号数据库,如果发现检索到的电子规范,其名称与规范数据库中的版本号不一致,提醒这个规范已经过期,需要谨慎对待。但旧规范没必要删除,可以作为对照使用。

爬虫

package main

import (

"fmt"

"log"

"net/http"

"strconv"

"code.google.com/p/mahonia"

"github.com/PuerkitoBio/goquery"

"github.com/mozillazg/request"

"github.com/tealeg/xlsx"

)

type Cata1 struct {

Id          string

Number      string

Title        string

Category    string

Leixing      string

Banbudata    string

Shishidata  string

Licinumber  string

Feizhidata  string

Tidainumber  string

Biaozhunfile string

}

func mainrequest1() {

c := new(http.Client)

req := request.NewRequest(c)

req.Cookies = map[string]string{

"JSESSIONID": "EF9156C40832CF0ADC83F7A509C90350",

"stylePath": "",

}

slice1 := make([]Cata1, 0)

for i := 0; i < 5; i++ {//分页

//职业健康法律

resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%D6%B0%D2%B5%BD%A1%BF%B5%B0%B2%C8%AB%B7%A8%C2%C9%B7%A8%B9%E6&08070300004_page=" + strconv.Itoa(i))

//环境法律

// resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%BB%B7%BE%B3%B7%A8%C2%C9%B7%A8%B9%E6&08070300004_page=" + strconv.Itoa(i))

//规范

// resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%BC%BC%CA%F5%B1%EA%D7%BC&08070300004_page=" + strconv.Itoa(i))

// j, _ := resp.Text()

// fmt.Println(j)

defer resp.Body.Close() // Don't forget close the response body

dec := mahonia.NewDecoder("GB2312") //定义转换乱码

// fmt.Println(dec.ConvertString(j))  //转成utf-8

rd := dec.NewReader(resp.Body)

doc, err := goquery.NewDocumentFromReader(rd)

if err != nil {

log.Fatal(err)

}

// var Cata []*Cata1

// Find the review items

doc.Find("tr.trclass").Each(func(i int, s *goquery.Selection) {

// For each item found, get the band and title

// band := s.Find("td").Text()

// fmt.Print(band)

aa := make([]Cata1, 1)

s.Find("td.tdclass").Each(func(i1 int, s1 *goquery.Selection) {

//band := s1.Text()

if i1 == 0 && s1.Text() != "" {

aa[0].Number = s1.Text()

// fmt.Printf("%d:1 %s\n", i1, s1.Text())

}

if i1 == 1 && s1.Text() != "" {

aa[0].Title = s1.Text()

// fmt.Printf("%d:2 %s\n", i1, s1.Text())

}

if i1 == 2 && s1.Text() != "" {

aa[0].Category = s1.Text()

// fmt.Printf("%d:3 %s\n", i1, s1.Text())

}

if i1 == 3 && s1.Text() != "" {

aa[0].Leixing = s1.Text()

// fmt.Printf("%d:4 %s\n", i1, s1.Text())

}

if i1 == 4 && s1.Text() != "" {

aa[0].Banbudata = s1.Text()

// fmt.Printf("%d:5 %s\n", i1, s1.Text())

}

if i1 == 5 && s1.Text() != "" {

aa[0].Shishidata = s1.Text()

// fmt.Printf("%d:6 %s\n", i1, s1.Text())

}

if i1 == 6 && s1.Text() != "" {

aa[0].Licinumber = s1.Text()

// fmt.Printf("%d:7 %s\n", i1, s1.Text())

}

if i1 == 7 && s1.Text() != "" {

aa[0].Feizhidata = s1.Text()

// fmt.Printf("%d:8 %s\n", i1, s1.Text())

}

if i1 == 8 && s1.Text() != "" {

aa[0].Tidainumber = s1.Text()

// fmt.Printf("%d:9 %s\n", i1, s1.Text())

}

if i1 == 9 && s1.Text() != "" {

aa[0].Biaozhunfile = s1.Text()

// fmt.Printf("%d:10 %s\n", i1, s1.Text())

}

//fmt.Printf("%d: 序号、编号、名称、分类……%s\n", i1, band) //, title

})

slice1 = append(slice1, aa...)

})

}

// fmt.Printf("slice1", slice1)

//写入excel

var file *xlsx.File

var sheet *xlsx.Sheet

var row *xlsx.Row

var cell *xlsx.Cell

file = xlsx.NewFile()

sheet, _ = file.AddSheet("Sheet1")

row = sheet.AddRow() //增加行

cell = row.AddCell() //增加列

cell.Value = "#"

cell = row.AddCell() //增加列

cell.Value = "标准编号"

cell = row.AddCell() //增加列

cell.Value = "标准名称"

cell = row.AddCell() //增加列

cell.Value = "标准类别"

cell = row.AddCell() //增加列

cell.Value = "法律法规类型"

cell = row.AddCell() //增加列

cell.Value = "颁布日期"

cell = row.AddCell() //增加列

cell.Value = "实施日期"

cell = row.AddCell() //增加列

cell.Value = "历次被替代标准编号"

cell = row.AddCell() //增加列

cell.Value = "废止日期"

cell = row.AddCell() //增加列

cell.Value = "替代标准编号"

cell = row.AddCell() //增加列

cell.Value = "标准文件"

for w, z := range slice1 { //行

row = sheet.AddRow() //增加行

cell = row.AddCell() //增加列

cell.Value = strconv.Itoa(w + 1)

cell = row.AddCell() //增加列

cell.Value = z.Number

cell = row.AddCell() //增加列

cell.Value = z.Title

cell = row.AddCell() //增加列

cell.Value = z.Category

cell = row.AddCell() //增加列

cell.Value = z.Leixing

cell = row.AddCell() //增加列

cell.Value = z.Banbudata

cell = row.AddCell() //增加列

cell.Value = z.Shishidata

cell = row.AddCell() //增加列

cell.Value = z.Licinumber

cell = row.AddCell() //增加列

cell.Value = z.Feizhidata

cell = row.AddCell() //增加列

cell.Value = z.Tidainumber

cell = row.AddCell() //增加列

cell.Value = z.Biaozhunfile

}

err := file.Save("MyXLSXFile.xlsx")

if err != nil {

fmt.Printf(err.Error())

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,446评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,323评论 0 2
  • 算错了时间,以为明天上了班才放假,结果今天上完班就放假了,啦啦啦啦~这算不算一个惊喜?一个很开心的事儿,伴随我整个...
    一木一于阅读 204评论 0 0
  • 我和萧远山走到崖边,山谷并不深,但崖山满是野生的枝条和荆棘。 “萧大哥!你在上面看着嫂子,我下去看看!” “兄弟当...
    鹏程九万里阅读 211评论 0 0
  • 《悔恋2》一:这是一个噩梦 首先声明《悔恋2》和1是没有衔接的哦,其实就是一个新坑。开头是改编自《那时喜欢你》因...
    缨紮妹阅读 475评论 0 1