https://www.193291.com/videodetails/48480.html
以上面的连接为例,获取MP4的下载地址。
thurl=”http://down.okdown10.com/20201130/13274_80888682/超级飞侠S09E20.mp4″
我们要匹配上面这样的地址
#正则表达式为
`thurl="(http:\/\/[^"]+)"`
[^"]+ 表示匹配多个非"的字符,这样就不用管中文了,加个括号就是一个单元
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"regexp"
)
type crawler struct {
reg string //保存正则表达式
url string //保存网址
info string
}
func (c crawler) getinfo() { //爬虫结构体的getinfo方法
res, err := http.Get(c.url)
if err != nil {
log.Fatal(err)
}
result, err := ioutil.ReadAll(res.Body)
// err = ioutil.WriteFile("abc.txt", result, 0777) //这里可以输出网页源码看看是否获取到正确的源码
res.Body.Close()
if err != nil {
log.Fatal(err)
}
rep := regexp.MustCompile(c.reg) //匹配正则
match := rep.FindAllStringSubmatch(string(result), -1) //返回的是[][]string,-1表示全部,1表示匹配1个,2就匹配2个
for _, m := range match { //遍历
fmt.Println(m[1]) //打印每个匹配到的第一个单元
}
}
func main() {
cr := crawler{`thurl="(http:\/\/[^"]+)"`, "https://www.193291.com/videodetails/48480.html", "下载地址爬取:"}
cr.getinfo()
}
这样写是不是挺简陋的?我们后面再慢慢修改!