本次使用go语言简单实现爬取百度贴吧里面的绝地求生吧,只是利用了一个http.Get()方法即可轻易爬取相关网页代码
直接上代码:
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func httpGet(url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 return } defer resp.Body.Close() buf := make([]byte, 4096) for { n, err2 := resp.Body.Read(buf) if n == 0 { fmt.Println("网页读取成功") return } if err2 != nil && err2 != io.EOF { err = err2 return } result += string(buf[:n]) } return } func work(start, end int) { //循环读取网页内容 for i := start; i <= end; i++ { //这里使用itoa的而不使用string的原因是因为string是按照Ascii码转换的,比如string(97) --> "a" url := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=" + strconv.Itoa((i-1)*50) fmt.Printf("正在读取第%d页\n", i) //创建一个方法来读取网页内容 result, err := httpGet(url) if err != nil { fmt.Println("读取网页出现错误:", err) return } //创建单个文件保存下来 file, err2 := os.Create("第" + strconv.Itoa(i) + "页.html") if err2 != nil { fmt.Println("Create err:", err) //继续读取下一页 continue } //直接写入字符串 //也可以用write方法写切片 file.WriteString(result) file.Close() } } func main() { var start, end int fmt.Print("请输入要开始爬取的页数:") fmt.Scan(&start) fmt.Print("请输入要结束的爬取页数:") fmt.Scan(&end) //启动进程爬取页面 work(start, end) }我们在控制台输入想要爬取的页面数 查看控制台可看到网页读取成功信息
程序会将爬取到的代码放入创建的文件中,文件会保存在项目包目录下 打开任意一个文件,即可查看爬取到的内容