V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zbl430
V2EX  ›  程序员

用 go 语言使用 goquery 爬去糗事百科热点笑话爬虫

  •  
  •   zbl430 · 2017-09-05 09:17:12 +08:00 · 4906 次点击
    这是一个创建于 2621 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里直接贴代码

    package main
    
    import (
    	"fmt"
    	"github.com/PuerkitoBio/goquery"
    	"log"
    	"strings"
    )
    
    type HotsContent struct {
    	num     int
    	content string
    	comment string
    	url     string
    }
    
    
    func main() {
    	fmt.Println("开始爬取糗事百科热点笑话...")
    	js, err := goquery.NewDocument("https://www.qiushibaike.com/hot/")
    	if err != nil {
    		log.Fatal(err)
    	}
    	js.Find("#content-left .article").Each(func(i int, contentSelection *goquery.Selection) {
    		//先判断是否有图片
    		img, _ := contentSelection.Find(".thumb a").Attr("href")
    		if len(img) == 0 {
    			hotsArt := HotsContent{}
    			content := contentSelection.Find(".content span").Text()
    			url, _ := contentSelection.Find(".contentHerf").Attr("href")
    			comment_name := contentSelection.Find(".cmtMain .cmt-name").Text()
    			comment_cont := contentSelection.Find(".cmtMain .main-text").Text()
    			hotsArt.num = i + 1
    			hotsArt.url = "https://www.qiushibaike.com" + url
    			hotsArt.content = strings.Replace(content, "\n", "", -1)
    			hotsArt.comment = strings.Replace(comment_name+comment_cont, "\n", "", -1)
    			fmt.Println("第", hotsArt.num, "个笑话:")
    			fmt.Println("\t", hotsArt.content)
    			fmt.Println("\t 最热评论:" + hotsArt.comment)
    			fmt.Println("\t 地址", hotsArt.url)
    			fmt.Println("======================================================")
    		}
    	})
    }
    

    谢绝吐槽,写着练手玩玩的

    10 条回复    2017-09-06 09:32:12 +08:00
    jjianwen68
        1
    jjianwen68  
       2017-09-05 09:35:19 +08:00
    几年前用过 goquery,挺好用
    zbl430
        2
    zbl430  
    OP
       2017-09-05 09:37:51 +08:00
    @jjianwen68 还可以
    qlbr
        3
    qlbr  
       2017-09-05 10:17:22 +08:00
    第一次见到活的 go 语言, 原来是酱紫的
    pathletboy
        4
    pathletboy  
       2017-09-05 10:21:59 +08:00
    你已经留了一个坑,结构体字段名首字母最好大写,避免将来踩坑。
    zbl430
        5
    zbl430  
    OP
       2017-09-05 13:42:20 +08:00
    @pathletboy 有道理,记住了
    yigemeirenyongde
        6
    yigemeirenyongde  
       2017-09-05 14:40:51 +08:00
    还在入门 go,前端转 go
    lixuda
        7
    lixuda  
       2017-09-05 14:44:53 +08:00
    感觉 go 越来越牛
    polaris1119
        8
    polaris1119  
       2017-09-05 14:49:54 +08:00
    go 发展还是挺猛的
    Akkuman
        9
    Akkuman  
       2017-09-05 16:52:56 +08:00
    go 写了几个网站,还行
    zbl430
        10
    zbl430  
    OP
       2017-09-06 09:32:12 +08:00
    @Akkuman 厉害
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5460 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 01:30 · PVG 09:30 · LAX 17:30 · JFK 20:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.