golang爬虫串行版本

package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strconv"
)


func main() {
	//爬取一个网页并保存在文件中
	var start,end int
	fmt.Println("请输入要爬取的起始页(>=1)")
	fmt.Scan(&start)
	fmt.Println("请输入要爬取的起始页(>=start)")
	fmt.Scan(&end)
	fmt.Println("开始爬取")
	//写一个函数爬取网页
	scapy(start,end)
}



func scapy(start int, end int) {
	fmt.Printf("正在爬取第%d页到%d页\n",start,end)
	for i:=start;i<=end ;i++  {
		url:= "http://tieba.baidu.com/f?kw=%E9%87%8D%E5%BA%86%E5%A4%A7%E5%AD%A6&ie=utf-8&pn="+strconv.Itoa((i-1)*50)
		resp,err:= http.Get(url)
		errprint("http get err",err)

		defer resp.Body.Close()

		f,err2:=os.Create("第"+strconv.Itoa(i)+"个网页.html")
		errprint("os create err",err2)
		//读取文件
		buff := make([]byte,4096)
		for{
			n,err:=resp.Body.Read(buff)
			errprint("resp body err",err)
			if n == 0{
				fmt.Printf("网页%d导出完成\n",i)
				break
			}
			//写出到文件
			f.Write(buff[:n])
		}
	}

}

func errprint(s string, e error) {
	if e!=nil&&e!=io.EOF{
		fmt.Println(s,e)
		return
	}
}

发布了74 篇原创文章 · 获赞 2 · 访问量 6471

猜你喜欢

转载自blog.csdn.net/weixin_42067668/article/details/103531590