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查看爬取到的文章:
{
"_id" : ObjectId("5b7c360ec6c321a4c48cb7e2"),
"title" : "37万元的“鸽子蛋”在家不翼而飞!杭州女子问遍保姆、钢琴老师…… 最后它出现在这里",
"decription" : "8月18日,刚刚过完七夕节的杭州萧山温女士,就遭遇了“当头一棒”。她那枚象征爱情的钻戒,不见了。这可是定制款的钻戒,一枚大大的“鸽子蛋”,戒指上面还刻有温女士丈夫李先生的名字,是两人结婚十周年的时候...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FG8vkERUJibks36GqXqotGT1HwpjibkXXC5aMdk34KZQRmyINeTkzre57KCia04V6gkaEGtkUU11dSib3pfn4YNd4GQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "钱江晚报",
"time" : "1534859218"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7e5"),
"title" : "一家医院同科室16名护士集体怀孕!原因成谜",
"decription" : "美国亚利桑那州梅萨一家医院发生了一件怪事,这家医院有16名护士竟然集体怀孕,且她们的预产期都是在今年的10月份到明年的1月份之间,更离谱的是,她们都是来自同一个科室的。这个“神奇”的事情还被刷上了热搜...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FfPSa4zeEwhAe8LoaicdibxXJv79K46vW4NrS26Fw1CxZHTcdgCibMPC0LOcNibQogBIY6b7oZ7ALLUoQ8vgwDblj9Q%2F0%3Fwx_fmt%3Djpeg",
"author" : "扬子晚报",
"time" : "1534858492"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7e8"),
"title" : "“谁规定一定要按号入座?”,理直气壮抢高铁座的座霸、醒醒吧!",
"decription" : "今天上午,一段“G334列车上男乘客霸占靠窗座位不肯让”的视频火了。一位女乘客的座位被占,她要求这位男乘客回自己的座位坐,这位男乘客却趾高气扬地说:“谁规定一定要按号入座?要么你自己站着,要 么去坐我那...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fx6iaHWKibUzk0UhqaGORKQ5nhKvibORCGfLMPeN0Ltcx7NvafPmopuo7Ylf1TI4Dg3T6bicXTZnw1YSWJRP8XXSrQg%2F0%3Fwx_fmt%3Djpeg",
"author" : "新浪新闻",
"time" : "1534858228"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7eb"),
"title" : "孙杨违规不对,但指责他“辱没国家荣誉”也是上纲上线",
"decription" : "孙杨是违规了没错,但侵也是侵了安踏的权,这和“个人利益凌驾于国家利益之上”还有很长的距离。全文1433字,阅读约需3分钟▲2018雅加达亚运会 泳池中的孙杨。图:视觉中国。孙杨因为他的领奖服,闹出 了一场风波...",
"image" : "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fp6Wl2LDMQlFjUotMTBZGOXUZnMzsv13UibaN1ibPcGc9jhyiatgFbx95Sicm0ATz8qpwdibfjOXZcN4hO4uqgibyw0rw%2F0%3Fwx_fmt%3Djpeg",
"author" : "新京报",
"time" : "1534858187"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7ee"),
"title" : "被继母虐待的鹏鹏还没“醒”来,生母即将生产,如今他身边只有护工陪伴",
"decription" : "“我臭臭,起来吃火龙果了。”护工张霞怀抱着被继母虐待成植物人的鹏鹏,一边喂火龙果酸奶一边轻轻唤道。 被继母虐待捡回一条命如今成植物人 2017年3月29日,渭南市临渭区一名遍体鳞伤的男童鹏鹏,被送进...",
"image" : "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJyco923vDiajiblRbXaHWe0urCicZOjjibpAic132KX4fuK5SVHu4vj6sYgVEmEY0QGNztpibsEjRTPRBdNiabejnYrgQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "华商报",
"time" : "1534857937"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7f1"),
"title" : "30亿条用户信息被盗!这个“史上最大规模数据窃取案”破了",
"decription" : "2017年,绍兴越城警方破获一起利用人工智能技术获取公民个人信息的案件,图为犯罪团伙作案工具。(图片来源:北京青年报)近日,记者从浙江绍兴越城区警方了解到,公安机关成功侦破一起特大规模的数据 窃取案,本...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FO9F3NTo58yr4IXtTGUhO2DqInk9dWMiad9r2nfezYGHjBkC8iaETSKQT1qZGOSbtjvp9oelKGib3DS44zzhsWIzwQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "新华网",
"time" : "1534857333"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7f4"),
"title" : "网友狂赞孙杨最后一棒,而他的领奖服却引来一场风波",
"decription" : "今天,印尼雅加达亚运会进行到第三个比赛日,中国斩获17金12银9铜,居奖牌榜首位!其中,我国游泳健儿的表现格外亮眼。首个决赛日,中国游泳队在全部7个项目的决赛中,拿到了4金2银4铜的好成绩。第二个比赛日,...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FIqicDAGdXNibtrnRvpQKyOHwJCQOliaMuLJmzEzAf2V2S25CPtrMpWMFFtEiaLKyvIWkQ9nTq0zRd4Ng8datvXjjAw%2F0%3Fwx_fmt%3Djpeg",
"author" : "中国日报双语新闻",
"time" : "1534857236"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7f7"),
"title" : "声音雕刻大师乔榛:用生命塑造声音之魂",
"decription" : " 《魂断蓝桥》《安娜·卡列尼娜》《战争与和平》《廊桥遗梦》《真实的谎言》……在译制片的黄金年代里,有一个人的声音曾伴随这些电影走进千家万户,镌刻在国人美好的记忆中。他就是语言表演艺术家 、导演乔榛...",
"image" : "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r2fdOVlScoDPH6eo5Yreq1tagslkibQXFuiaicFgddk1aZw6gdPFjTicU8WLkUhf2QZgicmnMEicPvktkk6aF7LNqzA%2F0%3Fwx_fmt%3Djpeg",
"author" : "中央纪委国家监委网站",
"time" : "1534856772"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7fa"),
"title" : "华商快讯:西安莲湖官方通报扔烟头拍照事件调查结果(附视频)",
"decription" : "今日(周二)上午,西安莲湖发布调查报告:经查看监控录像,烟头来源系两名检查人员沿途捡拾收集,拍照系留痕佐证。两名环卫工被罚款系二人未在规定的早7点前完成普扫任务造成漏扫,垃圾和落叶没清理,被环卫公...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FJyco923vDiajiblRbXaHWe0urCicZOjjibpAgepU6Rw9ea1QSEibTGOA3rMgIxhA1cOPdDKCXwMBvNibjVFXAsPtNJUA%2F0%3Fwx_fmt%3Djpeg",
"author" : "华商报",
"time" : "1534854805"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb7fd"),
"title" : "江西上高枪击案致2死续:又发现2人被疑犯况玉林杀害,嫌犯仍在逃",
"decription" : "今日(21日)上午10时许,记者拨打上高县公安局悬赏通告公布的举报电话,对方称,除了两起枪击杀人案件,还有2人被况玉林杀害。全文783字,阅读约需1.5分钟▲江西宜春连续发生两起持枪杀人案 嫌犯仍在逃 。 新京报...",
"image" : "//img02.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fp6Wl2LDMQlFjUotMTBZGOXUZnMzsv13Un3syvTGiaPJhLMEeAoK7svRGQLOvgvvLkmO9S3tbSUuSIZznZhDMrgg%2F0%3Fwx_fmt%3Djpeg",
"author" : "新京报",
"time" : "1534853730"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb800"),
"title" : "学校没了,也许他们只能回家当留守儿童",
"decription" : "拥有20年办学历史、曾经北京市最大的打工子弟学校、石景山区黄庄学校,由于“用地纠纷、办学许可证无法换新等问题”,终于不得已走到了关停这一步。曾是北京最大打工子弟学校如今校门前被焊上铁门北京 市石景山区...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fx6iaHWKibUzk2EZYo2Qzibbe1c3nhW4W8l13ibibf1Ukc1FiaUTwPf1XZad0McMYVMeibcppW11H8kmibpI6P7YIdB7ibibQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "新浪新闻",
"time" : "1534843182"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb803"),
"title" : "关于宣传思想工作,习近平总书记这样说",
"decription" : " 党的十八大以来,以习近平同志为核心的党中央高度重视宣传思想工作,习近平总书记在全国宣传思想工作会议、文艺工作座谈会、党的新闻舆论工作座谈会等会议上多次发表重要讲话,形成了一以贯之的思 想脉络、构...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r2fdOVlScoDPH6eo5Yreq1tagslkibQXcno8OSCPJx9CibQvjLEJP4GibYnt0Q9kp5bXiaiaJBFzVmeiacYjjaH6aMw%2F0%3Fwx_fmt%3Djpeg",
"author" : "中央纪委国家监委网站",
"time" : "1534841909"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb806"),
"title" : "21岁女孩“自杀式”减肥,瘦到50斤成植物人!昏睡40天醒来,三年记忆消失了",
"decription" : "长久昏迷,突然苏醒,忘记了很多从前的记忆。这种在影视剧才能见到的“桥段”就发生在哈医大一院病房里。患者是位女孩,21岁的她,身高1.67米,体重只有50斤。入院之前的小倩入院前,她曾“自杀式”减 肥,每天只...",
"image" : "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FG8vkERUJibks36GqXqotGT1HwpjibkXXC57RwcRYiaLWgicfb8Jx2pYxKLib9ogzTZS7IgkHMsPArcPkLdVfiafjO3bg%2F0%3Fwx_fmt%3Djpeg",
"author" : "钱江晚报",
"time" : "1534841719"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb809"),
"title" : "刚刚,中国与萨尔瓦多建立外交关系!",
"decription" : "国务委员兼外交部长王毅8月21日在北京与萨尔瓦多外长卡斯塔内达举行会谈。会谈后,两国外长签署了《中华人民共和国和萨尔瓦多共和国关于建立外交关系的联合公报》。萨尔瓦多位于中美洲北部。北邻洪都拉斯,南濒...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FO9F3NTo58yr4IXtTGUhO2DqInk9dWMiadZVibN9MIn06ibltKjnTW4ibM4DBpILGR0n4xW9HibR0jFHXibgYj4VxTDTA%2F0%3Fwx_fmt%3Djpeg",
"author" : "新华网",
"time" : "1534835383"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb80c"),
"title" : "1米67才50斤!21岁女孩“自杀式减肥”,脑组织如60岁老人",
"decription" : "长久昏迷,突然苏醒,忘记了很多从前的记忆。这种在影视剧才能见到的“桥段”就发生在哈医大一院病房里。患者是位女孩,21岁的她,身高1.67米,体重只有50斤。入院前,她曾“自杀式”减肥,每天只摄入 正常人需要...",
"image" : "//img04.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FfPSa4zeEwhAe8LoaicdibxXJv79K46vW4N6DI3N1ZsV8j8RcOzsdEIgmiawibSe8zSSeLPVh6Ld4g1MOwbp2PAFrUQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "扬子晚报",
"time" : "1534832961"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb80f"),
"title" : "天天被骂“假新闻”,美国媒体爆发了!350家媒体集体“宣战”特朗普丨外媒说",
"decription" : "近日,美国媒体抱团“宣战”特朗普了!自上台以来,美国总统特朗普多次公开抨击美国媒体炮制假新闻,是“美国人民的公敌”。“Fake News”的指责声不绝于耳。日前,美国媒体终于忍无可忍,《波士顿环球报》吹响...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FIqicDAGdXNibvYxF5vJVRNE23oqTZXQGXMTgQmhtfc1XZoQj9z1bpZuNH4uKSsOcibsngJAm2TWK1LHIyD2LtqsAw%2F0%3Fwx_fmt%3Djpeg",
"author" : "中国日报双语新闻",
"time" : "1534831983"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb812"),
"title" : "海外抗癌仿制药黑市调查丨代购中的假药风险",
"decription" : "“怎么知道药是真还是假?我会问别人用了效果怎么样,或者大家用谁的我买谁的。”肺癌患者顾前芬对新京报记者说,对于大部分用印度仿制药的患者来说,药品渠道确实不透明,他们也无法保证药效和真伪,只能把自己...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fp6Wl2LDMQlG8IZdMTLz0cibliabOuM1r8StyOoKOZ3Ll8SMTlicTmTcwbm0fynSoLZibhbV55SegVJQxzJ9zYgN62w%2F0%3Fwx_fmt%3Djpeg",
"author" : "新京报",
"time" : "1534827092"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb815"),
"title" : "一条鲫鱼正在刷屏:它把4名浙江高中生送进清华,背后的秘密是……",
"decription" : "昨天下午开始,记者被一条鲫鱼刷屏。据说,全国有50名高中生因为成功解剖鲫鱼,拿到保送资格,提前敲开清华等一流名校的资格。其中,包括浙江的4位高中生。原来,他们参加的是第27届全国中学生生物学竞赛。比赛...",
"image" : "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FG8vkERUJibksZOfKqHjRcnkBU5ibv4PJ5ReGLWn86Pmpkf7g1rru3NwoF8xr8etz2icjwIu3Qz9krsqViaKfF2BeBQ%2F0%3Fwx_fmt%3Djpeg",
"author" : "钱江晚报",
"time" : "1534822495"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb818"),
"title" : "超过25000个!这些App被苹果大规模下架",
"decription" : "导读日前,苹果公司发布消息,将应用商店中超过25000款涉及假彩票、赌博等非法App进行了大规模下架。 近日,苹果公司发表的声明称:我们已经移除了很多试图在我们的 App Store上发布违法博彩App的开发 者,并下架...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FO9F3NTo58yrADhtaL76ibdmibyVUuxsXuEFPGamib9kL4kx7nEClgiaKc6wmdH049AEErTv3F2g7wq1R0CJibx0Jpfg%2F0%3Fwx_fmt%3Djpeg",
"author" : "新华网",
"time" : "1534822172"
}
{
"_id" : ObjectId("5b7c360fc6c321a4c48cb81b"),
"title" : "朝着全球覆盖稳步迈进!中国北斗“亮晶晶”丨新时代·新本领",
"decription" : "▲5分钟带你了解北斗卫星导航系统 中国北斗实现全球导航的梦想,正加速到来。7月29日9时48分,我国成功发射第33、34颗北斗导航卫星。 今年7月29日,我国在西昌卫星发射中心用长征三号乙运载火箭 (及远征一...",
"image" : "//img03.sogoucdn.com/net/a/04/link?appid=100520033&url=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r2fdOVlScorNyUNBjyGByV2xP46wdIpdLAFqswNPjqCy24yCZIdjKsKE08FeqIJeABumBy0JUdlgn0mbweD1Q%2F0%3Fwx_fmt%3Djpeg",
"author" : "中央纪委国家监委网站",
"time" : "1534821172"
}