用golang写一个发现新网站的爬虫
以下是示例代码,可以参考思路。
package main
import (
    "fmt"
    "net/http"
    "strings"
)
func main() {
    // 定义起始页面startURL := "https://www.google.com"
    // 初始化一个队列来存储待爬取的网址queue := []string{startURL}
    // 循环爬取网页for len(queue) > 0 {
        // 从队列中取出一个网址url := queue[0]
        queue = queue[1:]
        // 发送HTTP请求,获取网页内容response, err := http.Get(url)
        if err != nil {
            fmt.Println(err)
            continue
        }
        // 解析网页内容,获取所有链接links := getLinks(response.Body)
        // 将新发现的链接加入队列for _, link := range links {
            if !strings.Contains(link, startURL) {
                queue = append(queue, link)
            }
        }
    }
}
// 获取网页中所有链接func getLinks(body io.ReadCloser) []string {
    links := []string{}
    // 使用正则表达式匹配所有链接re := regexp.MustCompile(`<a href="(.*?)">`)
    // 遍历网页内容scanner := bufio.NewScanner(body)
    for scanner.Scan() {
        // 匹配链接match := re.FindStringSubmatch(scanner.Text())
        if match != nil {
            links = append(links, match[1])
        }
    }
    return links
}
苏公网安备
                32050902101537号