1 Star 0 Fork 0

muyouking/bigbasetool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
01_regex.go 3.00 KB
一键复制 编辑 原始数据 按行查看 历史
muyouking 提交于 2020-06-30 17:14 . 大基建工具首次备份
package main
import (
"blenderTool/tools"
"fmt"
"github.com/hyq/Tools"
"io"
"log"
"net/http"
"os"
"path"
"regexp"
)
func main() {
kocInfos := CreatKocDownloadInfo(`htmls`)
for _, koc := range kocInfos {
Download(koc)
}
}
//读取path文件夹里的hmtl,
//返回一个切片,切片内容为该koc 的id ,空间类型,zip下载,xml下载链接
func CreatKocDownloadInfo(path string) []koc {
filelist := Tools.H_GetFileList(path, "html")
kocinfo := make([]koc, 0, 246)
for _, fn := range filelist {
content, _ := Tools.H_GetFileContents(fn)
//fmt.Println(err,content)
koccontents := rexgex(content)
kocinfo = append(kocinfo, koccontents...)
}
return kocinfo
}
type koc struct {
id string
h_type string
zip_href string
xml_href string
}
func rexgex(content string) []koc {
kkocarray := make([]koc, 0, 10)
//content_regex := regexp.MustCompile(`<tr data-id="(\d+)">`) //<tr data-id="(\d+)"> 获取ID
//content_regex.Longest() //贪婪模式
tbody_reg := regexp.MustCompile(`(?s:<tbody>.*?</tbody>)`)
td_reg := regexp.MustCompile(`(?s:<tr data-id=(.*?)</tr>)`) //将表格每一行的内容单独一行行取出来
td_id := regexp.MustCompile(`<tr data-id="(.*?)">`)
a_href_reg := regexp.MustCompile(`<a href="(.*?)" class="btn btn-xs btn-primary">`) //取出链接
h_type_res := regexp.MustCompile(`<td>(.*?)</td>`) //取空间类型
tbody := tbody_reg.FindAllStringSubmatch(content, -1)[0][0] //整个表格的内容
td_contents := td_reg.FindAllStringSubmatch(tbody, -1) //每行内容的集合
for _, td_content := range td_contents {
var kkoc koc //声明一个准备接收的结构体
response := td_content[0] //每一行的数据
//td_content := td_reg.FindAllStringSubmatch(response,-1) //每一行的内容
a_href := a_href_reg.FindAllStringSubmatch(response, -1) //链接
h_type := h_type_res.FindAllStringSubmatch(response, -1) //空间类型
h_id := td_id.FindAllStringSubmatch(response, -1)
kkoc.zip_href = a_href[0][1]
kkoc.xml_href = a_href[1][1]
kkoc.id = h_id[0][1]
kkoc.h_type = h_type[7][1]
//fmt.Println(kkoc.id,kkoc.zip_href,kkoc.xml_href)
//fmt.Println(kkoc.zip_href)
//fmt.Println(kkoc.xml_href)
//fmt.Println(kkoc.id)
//fmt.Println(kkoc.h_type)
//fmt.Println(kkoc)
kkocarray = append(kkocarray, kkoc)
}
return kkocarray
//fmt.Println(contents)
//fmt.Println((tbody))
//fmt.Println(len(td_contents))
}
func Download(k koc) {
zipname := k.id + k.h_type + ".zip"
ziplink := k.zip_href
xmlName := k.id + k.h_type + ".xml"
xmlLink := k.xml_href
down(ziplink, zipname)
down(xmlLink, xmlName)
}
func down(link, name string) {
downloadpath := path.Join(Tools.Getcwd(), "download")
err := tools.MakeDir(downloadpath)
if err != nil {
log.Fatal(err)
}
namepath := path.Join(downloadpath, name)
fmt.Println(namepath)
zipRes, err := http.Get(link)
if err != nil {
log.Fatal(err)
}
resZip, err := os.Create(namepath)
if err != nil {
log.Fatal(err)
}
io.Copy(resZip, zipRes.Body)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/muyouking/bigbasetool.git
git@gitee.com:muyouking/bigbasetool.git
muyouking
bigbasetool
bigbasetool
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385