Go语言是Google推出的一个全新的编程语言,在2009年11月正式对外发布。经过快速迭代,2012年3月28日,Go发布第⼀个正式的稳定版本。
出身名门的go语言,吸收了其他语言的特点,是一种并发的、带垃圾回收的、快速编译的语言。
Go语言是Google推出的一个全新的编程语言,在2009年11月正式对外发布。经过快速迭代,2012年3月28日,Go发布第⼀个正式的稳定版本。
出身名门的go语言,吸收了其他语言的特点,是一种并发的、带垃圾回收的、快速编译的语言。
ThinkGo 是一个轻量级的 Go 语言 MVC 框架,目前支持路由、中间件、控制器、请求、响应、Session、视图、日志、缓存、ORM等 web 框架应该具备的基本功能,ThinkGo致力于让代码简洁且富于表达力,帮助开发者快速构建一个 Web 应用。
前置
/后置
中间件RFC 5424
规范。go get github.com/thinkoner/thinkgo
goquery是一个使用go语言写成的HTML解析库,可以让你像jQuery那样的方式来操作DOM文档,使用起来非常的简便。
闲话少说,直接上代码:
package main
import (
"gopkg.in/mgo.v2"
"github.com/PuerkitoBio/goquery"
"log"
"gopkg.in/mgo.v2/bson"
)
type Article struct {
Title string
Decription string
Image string
Author string
Time string
}
func main() {
getArticle()
}
func getArticle() {
//连接MongoDB数据库
session, err := mgo.Dial("")
if err != nil {
panic(err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
c := session.DB("test").C("article")
//使用goquery开始抓取
doc, err := goquery.NewDocument("http://weixin.sogou.com/")
if err != nil {
log.Fatal(err)
}
//编辑文章节点
doc.Find(".news-list li").Each(func(i int, contentSelection *goquery.Selection) {
//文章标题
title := contentSelection.Find(".txt-box h3 a").Text()
decription := contentSelection.Find(".txt-box .txt-info").Text()
image, _ := contentSelection.Find(".img-box img").Attr("src")
author := contentSelection.Find(".txt-box .account").Text()
time, _ := contentSelection.Find(".txt-box .s-p").Attr("t")
result := Article{}
//是否已经保存过该文章
err = c.Find(bson.M{"title": title}).One(&result)
if err != nil {
log.Println("第", i+1, "篇文章:", title)
//保存至数据库
err = c.Insert(&Article{title, decription, image, author, time})
if err != nil {
panic(err)
}
}
log.Println(result)
})
}
MongoDB查看爬取到的文章:
专业企业官网建设,塑造企业形象,传递企业价值
系统软件开发,用心思考,用心设计,用心体验
打破技术瓶颈,让不堪重负的项目起死回生
构建全渠道一体化运营能力,实现全链路数字化
文案撰写、营销策划,专注品牌全案
一站式解决企业互联网营销痛点和难题
以技术的力量,改变互联网
联系我们