用go实现简单爬虫|用go实现简单爬虫| go小项目练习
目标【用go实现简单爬虫|用go实现简单爬虫| go小项目练习】用go爬取豆瓣上250个高分好评电影名称
实现思路:
- 通过用http包的client成为客户端
- 获取页面信息
- 设置user-agent
- 再次发起http请求
- 用goquery爬取数据
代码实现:
package mainimport (
"fmt"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
"strconv"
"time"
)//1、请求
//2、解析
//3、打印
func main() {
//获取客户端
client := &http.Client{
Timeout: 2 * time.Second,
}
//根据url的规律,for循环获取10张页面
for i := 0;
i < 10;
i++ {
index := i * 25
//strconv.Itoa(index)将整型转换成string型
req, _ := http.NewRequest("GET", "https://movie.douban.com/top250?start="+strconv.Itoa(index)+"&filter=", nil)//User-Agent
//即用户代理,网站服务器通过识别它来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息,并判断通过判断它来给客户端发送不同的页面。
//在返回值的头部设置user-agent
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0;
WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36")
//发起 HTTP 请求
resp, err := client.Do(req)
if err != nil {
fmt.Printf("%s\n", err.Error())
return
}defer resp.Body.Close()//resp.Body就是html文件
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
log.Fatal(err)
}
//#content 表示id为content
//.grid_view 表示class为grid_view
doc.Find("#content .grid_view li").Each(func(i int, s *goquery.Selection) {
content := s.Find(".title").Eq(0).Text()
fmt.Println(content)
})
}
}
goquery参考链接
推荐阅读
- TeamViewe怎样用手机控制电脑?TeamViewe手机控制电脑图文详细教程
- 搜狗输入法开挂模式怎样用?搜狗输入法开挂模式运用图文详细教程_搜狗输入法
- 应用宝怎样上传APP?应用宝上传APP办法
- 使用android productFlavors时,sonarqube gradle插件异常
- 在android中使用mapsforge的离线地图
- Apple Maps使用哪种SRID()
- ImageView在android中不起作用
- 如何在android中使用SwipeRefreshLayout和imageView进入NestedScrollView
- 10个最佳高级多用途目录模板
- 如何禁用图像视图android上的点击监听器