Golang笔记

Golang 爬虫工具 goquery 推荐

goquery 是基于标准库net/html 实现的用于解析 HTML 的库,是使用 jQuery 的方式去操作 DOM。

使用很简单:

package main

import (
    // import standard libraries
    "fmt"
    "log"

    // import third party libraries
    "github.com/PuerkitoBio/goquery"
)

func postScrape() {
    doc, err := goquery.NewDocument("https://www.golangnote.com")
    if err != nil {
        log.Fatal(err)
    }

    // use CSS selector found with the browser inspector
    // for each, use index and item
    doc.Find(".topic-items article header h1").Each(func(index int, item *goquery.Selection) {
        title := item.Text()
        linkTag := item.Find("a")
        link, _ := linkTag.Attr("href")
        fmt.Printf("Post #%d: %s - %s\n", index, title, link)
    })
}

func main() {
    postScrape()
}

输出:

Post #0: golang http 转向状态码的小区别 - http://www.golangnote.com/topic/198.html
Post #1: golang 获取用户真实访问ip 地址 - http://www.golangnote.com/topic/197.html
Post #2: 推荐几款开源免费的用golang写的论坛程序 - http://www.golangnote.com/topic/196.html
Post #3: Golang io.ReadCloser 和[]byte 相互转化的方法 - http://www.golangnote.com/topic/195.html
Post #4: golang 截取中文不出现乱码的方法 - http://www.golangnote.com/topic/194.html
Post #5: Golang 用标准库把图片做成gif动画 - http://www.golangnote.com/topic/193.html
Post #6: golang 获取程序本身的md5值 - http://www.golangnote.com/topic/192.html
Post #7: golang 基于bolt 做一个支持hash、zet 数据结构 - http://www.golangnote.com/topic/191.html
Post #8: Golang 定时循环的实现 - http://www.golangnote.com/topic/190.html
Post #9: goji 路由组、反向代理、中间件简单示例 - http://www.golangnote.com/topic/189.html
Post #10: Golang 合并byte 的性能比较 - http://www.golangnote.com/topic/188.html
Post #11: Golang string 和byte 操作性能比较 - http://www.golangnote.com/topic/187.html
Post #12: Golang byte to string 的方法实践 - http://www.golangnote.com/topic/186.html
Post #13: Golang 简单的任务队列 - http://www.golangnote.com/topic/185.html
Post #14: Golang 并发控制的两种模式 - http://www.golangnote.com/topic/184.html
Post #15: Golang 切割pdf 文件并取出前三页 - http://www.golangnote.com/topic/183.html
本文网址: https://golangnote.com/topic/199.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles