用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
}