代码拉取完成,页面将自动刷新
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。