欢迎光临
我们一直在努力

go语言学习例子No.13-单页面单任务爬虫1

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()
}

这样写是不是挺简陋的?我们后面再慢慢修改!

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:家里蹲的狐狸 » go语言学习例子No.13-单页面单任务爬虫1

分享到: 生成海报
avatar

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活