golang使用正則表達(dá)式解析網(wǎng)頁(yè)
更新時(shí)間:2015年03月20日 10:32:19 投稿:hebedich
這篇文章主要介紹了golang使用正則表達(dá)式解析網(wǎng)頁(yè),需要的朋友可以參考下
廢話少說(shuō),直接奉上代碼:
復(fù)制代碼 代碼如下:
package main
import (
"fmt"
"time"
"io/ioutil"
"net/http"
"regexp"
"strings"
)
func main() {
ip_pool := []string{
"172.16.1.128",
"172.16.1.129",
"172.16.1.131",
"172.16.1.132",
"172.16.1.133",
"172.16.1.134",
"172.16.1.135",
"172.16.1.136",
"172.16.1.137",
"172.16.1.138",
"172.16.1.190",
}
for {
for i:=0;i<len(ip_pool);i++ {
url := "http://"+ip_pool[i]+":10022"
//fmt.Println("-----------------",ip_pool[i],"---------")
get_url(url)
time.Sleep(1*time.Millisecond)
}
//time.Sleep(time.Second * 60)
}
}
func get_url(url string){
fmt.Println("----------",url,"----------------")
resp, err := http.Get(url)
if err != nil {
fmt.Println("http get error.")
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("http read error")
}
src := string(body)
//將HTML標(biāo)簽全轉(zhuǎn)換成小寫(xiě)
re, _ := regexp.Compile("\\<[\\S\\s]+?\\>")
src = re.ReplaceAllStringFunc(src, strings.ToLower)
// 提取table 標(biāo)簽
re,_ = regexp.Compile("\\<!doc[\\S\\s]+?\\<table")
src = re.ReplaceAllString(src, "<table")
re,_ = regexp.Compile("</table\\>[\\S\\s]+?\\</html\\>")
src = re.ReplaceAllString(src, "</table>")
// 干掉行首的空格
re,_ = regexp.Compile("(\\<tr>)([\\S\\s\\<>\"\\d]+?)(\\</tr>)")
//src = re.ReplaceAllString(src, "$2")
src = re.ReplaceAllString(src, "$2]")
// 去掉<>標(biāo)簽
re,_ = regexp.Compile("<[\\S\\s]+?>")
src = re.ReplaceAllString(src, "")
re,_ = regexp.Compile("\n")
src = re.ReplaceAllString(src, "")
re,_ = regexp.Compile("[ ]+")
src = re.ReplaceAllString(src, " ")
re,_ = regexp.Compile("]")
src = re.ReplaceAllString(src, "\n")
// 變成 json 1 2 3 4
re,_ = regexp.Compile("(\\w*)(\\w{2}:\\w{2}:\\w{2}:\\w{2}:\\w{2}:\\w{2})([A-Za-z ]*)(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} )([V\\d\\.]* )(\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}(:\\d{2})?)?)")
/* (((\\d{4}-\\d{2}-\\d{2})+ (\\d{2}:\\d{2}:\\d{2})*?)")
*/
src = re.ReplaceAllString(src, "$1,$2,$3,$4,$5,$6,")
//re,_ = regexp.Compile("(<[\\S\\s]*?\">)([\\S\\s]+?)(</t")
//src = re.ReplaceAllString(src, "$2,")
// re,_ = regexp.Compile("<[\\S\\s]+?>")
// src = re.ReplaceAllString(src, "")
//reg := regexp.MustCompile("([A-Za-z]+?)(\n[\\s]+)([\\d]+)")
// src = reg.ReplaceAllString(src, "$1:$3")
//去除連續(xù)的換行符
//re, _ = regexp.Compile("\\s{2,}")
//src = re.ReplaceAllString(src, "\n")
//re = regexp.MustCompile("\n\\d+")
//fmt.Println(re.ReplaceAllLiteralString("hello\n2\nwork", '\d'))
src = strings.Replace(src,"虛擬機(jī)名稱(chēng) 虛擬機(jī)MAC 虛擬機(jī)狀態(tài) 心跳時(shí)間 引擎版本 病毒庫(kù)日期 掃描樣本數(shù)" , "vm_name,vm_mac,vm_state,vm_heart,vm_eg,vm_av_db,vm_count",-1)
fmt.Println(src)
//reg, err := regexp.Compile("[[0-9A-Za-z]{2}:?]{6}")
//fmt.Printf("%q,%v\n", reg.FindString("00:16:3e:4a:29:35"), err)
// "Hello",
// text := "Hello\n123\nGo\n123"
// reg = regexp.MustCompile("([A-Za-z]+?)(\n)([\\d]+)")
// fmt.Printf("%q\n", reg.ReplaceAllString(text, "$3:$1"))
//fmt.Println(strings.TrimSpace(src))
//去除STYLE
//re, _ = regexp.Compile("\\<style[\\S\\s]+?\\</style\\>")
//src = re.ReplaceAllString(src, "")
//去除SCRIPT
//re, _ = regexp.Compile("\\<script[\\S\\s]+?\\</script\\>")
//src = re.ReplaceAllString(src, "")
//去除所有尖括號(hào)內(nèi)的HTML代碼,并換成換行符
//re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")
//src = re.ReplaceAllString(src, "\n")
//去除連續(xù)的換行符
//re, _ = regexp.Compile("\\s{2,}")
//src = re.ReplaceAllString(src, "\n")
//fmt.Println(strings.TrimSpace(src))
}
以上就是本文給大家分享的代碼了,希望大家能夠喜歡。
相關(guān)文章
golang 函數(shù)返回chan類(lèi)型的操作
這篇文章主要介紹了golang 函數(shù)返回chan類(lèi)型的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Golang?中的?unsafe.Pointer?和?uintptr詳解
這篇文章主要介紹了Golang中的unsafe.Pointer和uintptr詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08解決goland中編輯tpl文件不高亮沒(méi)智能補(bǔ)全的問(wèn)題
這篇文章主要介紹了解決goland中編輯tpl文件不高亮沒(méi)智能補(bǔ)全的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12