栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

go语言 爬虫_go语言做爬虫?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go语言 爬虫_go语言做爬虫?

一、项目代码
package main

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

//爬取指定url的页面,返回result
func HttpGet2(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 {
			break
		}
		if err2 != nil && err2 != io.EOF {
			err = err2
			return
		}
		result += string(buf[:n])
	}
	return
}
func Save2file(idx int, filmName, filmScore, filmpeople [][]string) {
	f, err := os.Create("第" + strconv.Itoa(idx) + "页.txt")
	if err != nil {
		fmt.Println("os.Create err:", err)
		return
	}
	defer f.Close()
	n := len(filmName) //得到条目数。
	//先打印抬头  电影名称    评分     评分人数
	f.WriteString("电影名称" + "ttt" + "评分" + "tt" + "评分人数" + "n")
	for i := 0; i < n; i++ {
		f.WriteString(filmName[i][1] + "ttt" + filmScore[i][1] + "tt" + filmpeople[i][0] + "n")
	}
}

//爬取一个页面信息
func SpiderPage2(idx int) {
	//获取url
	url := "http://imdb.kxapps.com/default.aspx?page=" + strconv.Itoa(idx)
	//url := "https://movie.douban.com/top250"
	//封装httpget2爬取url对应页面
	result, err := HttpGet2(url)
	if err != nil {
		fmt.Println("HttpGet2 err:", err)
		return
	}
	//fmt.Println("result=", result)
	//解析,编译正则表达式——电影名称
	ret1 := regexp.MustCompile(` )
	//提取需要信息
	//电影名称
	filmName := ret1.FindAllStringSubmatch(result, -1)
	//评分
	ret2 := regexp.MustCompile(``)
	filmScore := ret2.FindAllStringSubmatch(result, -1)
	//评分人数
	ret3 := regexp.MustCompile(`>(.*?)人评分`)
	filmpeople := ret3.FindAllStringSubmatch(result, -1)
	//将提前的有用信息封装到文件中
	Save2file(idx, filmName, filmScore, filmpeople)
}
func toWork(start, end int) {
	fmt.Printf("正在爬取%d到%d页...n", start, end)
	for i := start; i <= end; i++ {
		SpiderPage2(i)
	}
}
func main() {
	//指定爬取起始,终止页
	var start, end int
	fmt.Print("请输入爬取的起始页(>=1):")
	fmt.Scan(&start)
	fmt.Print("请输入爬取的终止页(>=strart):")
	fmt.Scan(&end)
	toWork(start, end)
}

二、效果展示



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号