欢迎光临
我们一直在努力

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

继上一个例子,我们来改写一下

fetcher里新建fetcher.go

package fetcher

import (
	"io/ioutil"
	"net/http"
)

func Fetch(url string) ([]byte, error) {
	res, err := http.Get(url)
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()
	return ioutil.ReadAll(res.Body)
}

parser里新建parser.go

package parser

import (
	"regexp"
)

func Parse(contents []byte, re string) string {
	rep := regexp.MustCompile(re)                            //匹配正则
	match := rep.FindAllStringSubmatch(string(contents), -1) //返回字符串切片,-1表示全部,1表示匹配1个,2就匹配2个
	var result string
	for _, m := range match {
		result = result + "\n" + m[1] //m[1]表示正则里第一个()里的内容
	}
	return result
}

engine里新建engine.go

package engine

import (
	"fmt"
	"log"

	"crawler0.1/fetcher"
	"crawler0.1/parser"
)

func Run(url string, reg string) {
	contents, err := fetcher.Fetch(url)
	if err != nil {
		log.Fatal(err)
	}

	result := parser.Parse(contents, reg) //解析Fetch到的内容

	fmt.Println(result) //打印匹配到的内容

}

main.go里

package main

import "crawler0.1/engine"

func main() {
	engine.Run("https://www.193291.com/videodetails/50977.html", `thurl="(http:\/\/[^"]+)"`)
}
 收藏 (0) 打赏

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

支付宝扫一扫赞助

微信钱包扫描赞助

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

分享到: 生成海报
avatar

热门文章

  • 评论 抢沙发

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

    登录

    忘记密码 ?

    切换登录

    注册

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