Node.js 爬微信文章

利用 Node 来抓取网页中需要的信息。

环境准备

  1. 基本环境: node && npm
  2. cheerio 模块:解析 HTML

安装 cheerio 通过 npm install cheerio

获取网页源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var http = require('http')
// 微信文章 : Android
var start_url = "https://weixin.sogou.com/weixin?query=android&type=2&page=2&ie=utf8"
http.get(start_url, function (res) {
var html = ''
res.on('data', function (data) {
html += data
})
res.on('end', function () {
console.log(html) // 打印网页源码
filterWeixinArticle(html)
})
}).on('error', function (e) {
console.log('获取信息失败')
})

通过 http 模块打印出来网页的源码:
图片
然后使用 cheerio 解析 HTML 字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var cheerio = require('cheerio')
function filterWeixinArticle(html) {
var $ = cheerio.load(html)
var items = $('.wx-rb')
items.each(function (item) {
var article = $(this)
// 文章标题
var title = article.find('h4').text().replace(/\s+/g, '')
// 副标题
var subtitle = article.find('p').text().replace(/\s+/g, '')
// 文章完整的url
var url = article.find('h4 a').attr('href').replace(/\s+/g, '')
// 文章 id
var id = article.attr('d').replace(/\s+/g, '')
// 作者名字
var authorName = article.find('.s-p a').attr('title')
// 作者主页
var authorUrl = article.find('.s-p a').attr('href')
var articleFrom = "weixin"
var articleItem = {
title: title,
subtitle: subtitle,
url: url,
article_id: id,
article_from: articleFrom,
author_name: authorName,
author_url: authorUrl
}
console.log('title:' + articleItem.title
+ '\nsubtitle:' + articleItem.subtitle
+ '\nurl:' + articleItem.url
+ '\nid:' + articleItem.article_id
+ '\nname:' + articleItem.author_name
+ '\naaurl:' + articleItem.author_url
+ '\n.................................\n\n')
})
}

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
title:Android日常开发总结的技术经验60
subtitle:通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部.Longa;判断a有没有赋值,if(a==0)在a没有赋值情况下会报错.应该if(a==null),Integer、Floag等也一样,原因你懂,只是提醒你要小心喔.编码遇到读写、出入等逻辑要双向考虑,文件导...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=NXYpqtVv4fKUBsqFpmpIR5CCHHrGvqE6kXYMOsigc3oyj3OyPsTNX5bpgdQsFXmjmZEwNPQGIzTo7n*xz*ZEtoEL99CHcWPqZfPhwEIOgJbDZpQ3QI*Lmi-WNogIDeU2Vsx0M*OBbeUFxZSNt6KBS8HK8*qEMmcCW1XembHPhnM=
id:ab735a258a90e8e1-6bee54fcbd896b2a-fd14b35016ff8b667ee4beb6300264b9
name:IT大牛人
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=9gqKRZeyNAYOmC8LKClHnlInQNVhvVkRjZfPgtYSSsR9SXHOfO*4q1rMqKpqgjHOC5Fd2iIltr*sI2NHUJo9Pg==
.................................
title:Android开发和Java开发有什么区别
subtitle:经常听说学Android开发首先要学Java语言,后来又听说还有Java开发这个行业,很是好奇,Android开发和Java开发有什么区别?之前了解到Android系统是基于Linux内核和驱动都是使用C/C++语言做开发,为什么又要选择Java作为开发语言呢?经过最近研究发现,原来是这么回事,废话不多...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=W*P4mHe*NUJ99i3nNo7TOIjf6YTu1QpurBdRu9pJulqkSCAR0B-jiAexfATJbmqpxz6o0zqF7*f0BBzqiHM6i1WomQG4RbwETSl0x8NNwpBoPkMqzP9IIPe5a9p8pZgX3QjnD2l6WUUfiIdSpo3clCsxV0RoSQuPrkLhKZNrzkg=
id:ab735a258a90e8e1-6bee54fcbd896b2a-8b3ccfa735dd903a26015cd2336fafd0
name:电商世纪
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=yowmZpBKe613d90SuSXx*k8MZMDBs7yWQuWuWsT0fNufkwitAQElDmdalVWm1QYqGEr1yCPd6GsJxsCOOWE*UA==
.................................
title:谷歌I/O大会之后,AndroidN将会带来哪些功能?
subtitle:随着谷歌I/O大会的召开,Android7.0(AndroidN)系统正式版也将于今年夏季到来,相信此时你一定在想:“AndroidN发布与我们有什么关系?天朝又用不到”,但是别忘了无论你用的是三星、是小米、是LG、还是索尼,他们所搭载的系统都是基于原始Android修改而来,所以我们经常看到手...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=*TNdFacgb6-0dZOYt*ZMwzGjLv2BcDfsNmkMRRf*1M*N5F7qk3tnqeN*KAVDyBMwuVibuaEot9FOgiderqfvbE-ISQ0KHl-b6Iwd1thzE21KEPJFdHxFxz2C9rn1C*BfmQdmrUZxjGvtvF0u5HARLiSRnfy1zHtVVPnA1xpEFgo=
id:ab735a258a90e8e1-6bee54fcbd896b2a-0c606a211b4a27b3e1d0dbe071cb59b0
name:DevStore
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=cUBy7lubgzeEL99mK6O**jPbPFzVKZmfoBd*5EplLLGRDmAJ-LTUaUKlt-LtBBfBCwAWkdeux*WsppGwTNsmBA==
.................................
title:Android7.0应用运行速度飙升600%!效率史上最高
subtitle:谷歌今天早些时候正式在I/O大会现场详细介绍了有关Android7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过VulkanAPI来在中低硬件配置设备上实现流畅游戏体验以及更多的Emoji表情.不过,Android7.0最大也是最引人关注的还是来自运行效率上...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=z8fbjM3PfPjV7wUxNIQvd*srD7vkuemnG4s*YZG2Whb1ce-P44PP8H0cQ0RMOOw9j*rpA6QtijNcKotzLmsypJUV-liwUneDu8akmo0dNte5ENFWSrk8kYKAWavHw94AcxFG0N*8LkCKegfOhk04rdwMQoQYxqtQyhD1sRuvYr0=
id:ab735a258a90e8e1-6bee54fcbd896b2a-1fc444d0ea3d2895668c9cf4c156c5bf
name:广东快通信息科技有限公司
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=owCQiyQBxuJO4aTnrvcXUxiIwILaPnZoMHp4yjtBvZO9tzaqceqWDmLy9wEXZbsR2VgFbr98Hzk3sMSZ6hZBOQ==
.................................
title:7年经验的Android开发工程师
subtitle:▌候选人编号TP16052601男327年工作经验本科西南大学生物科学【求职状态】526日正在找工作【求职意向】Android开发工程师【到岗时间】即时到岗【目标地点】北京【期望行业】计算机软件、互联网/电子商务【期望薪资】面议【自我评价】熟练掌握OkHttp、Volley、butterknife、...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=mH4vmswEAJEmBWt3K6dU2bhxweD8BYIQ0lE7jmrzKiPzVMWWaEX3mLi16nl0U*PNdoZb0r6pVF92ZguAtBXWTJV3n*TmIibW6NUoWj5lJduMY9CvPsptuu6*ZeBDiKg*YteUDeIfnCyu1tgnUHi4qClecJS30mwraD2xhcplI28=
id:ab735a258a90e8e1-6bee54fcbd896b2a-bfa3bc3c88c4d53073cffbcd55097ef7
name:合拍人力资源中心
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=qvNLNL15GF4cLv09Q0GhqFU5Sf1KSlHjdcmYyZWVOy5gxLft0hjjGuwtfL1G7tcATrQX-T2efIVPab3-armSHw==
.................................
title:Android升级太慢!谷歌使出拉黑大招
subtitle:北京时间526日消息,彭博社报道,谷歌正采取新措施,以推动Android手机更快地升级至最新版本.由于Android系统碎片化的问题,因此谷歌可能将采取非传统的手段.谷歌正在考虑的方式之一是,根据手机厂商升级系统的“熟练度”发布排名.发布这样的数据将鼓励手机厂商在系统升...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=hoQI56*wxOWyeymtTwC3HGjclKnR*Y0e0GsQWtPzTsXo8ejqYPAcH71j86vF-ZxyrpOfmCVsbW012uxaFUUCQ1PLv1UKCD9TPaLCOxII6PrDNu*Q9g0RU0cSgo7h4GV4ObtQiHNBajNrZr37cTvVAFo4O*mR*CadJJ6rOuhSzKI=
id:ab735a258a90e8e1-6bee54fcbd896b2a-05c724eabcac6ed92c3f7bf78e279af6
name:周路1312
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=lj0aq-0nHLY-dHzY*ZRwOQV*-Zam610x2gwYtmqbszLKUhUN7uRhMYw4Qa43BpSIRWyh53vKjPJ0rKSqHusSEg==
.................................
title:苹果iOS10新增这5项AndroidN功能,酷炫!
subtitle:如果没有意外的话,苹果下一代iPhone以及iOS10操作系统将会在今年夏天跟谷歌AndroidN系统展开激烈的竞争.我们在AndroidN系统上看到了一些非常大的进步,不少特性都让人眼前一亮.外媒CultOfMac认为,如果AndroidN系统的这5个特性能够出现在未来的iOS版本上...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=d9OAuBtb97E09c2c1cgbaGp8Td3rZrAzUR0JITEZWQzOZgQDMRe3Yn8nvTaUjhCsazngzOha5VzOk2ccXoi*9vJzF-GuDEGMBl68yeG197ixJIRdvTkaDpRaIQLK3KVSYQQSZQcjaOrp1bN6L4KghEKryWLz0-ousX3vVoJYpQQ=
id:ab735a258a90e8e1-6bee54fcbd896b2a-c651e8da99849f6fee9f8303bffed181
name:达内iOS培训
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=*jQgyhjKt2Yzq67KwgipuPukbM-crBBf9livbnyABwBSVYpqBQS93DT4ltZTm1smAZ*v6HWsvBi7SYSJEQgC*Q==
.................................
title:AndroidQQ6.3.7.2795正式发布~
subtitle:QQforAndroid6.3.7版本功能介绍:1.视频对讲自动保存,生成专属表情包2.好友推荐推荐可能认识的人,发现更多新朋友3.热聊语音秀新增点赞功能,支持你喜欢的房间4.口令红包消息超过十二条时,可自动折叠5.多条消息被合并转发后,可再次转发6.手势密码升级,保障信息安全,支持单独...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=qPCFsTnwZTSKVlCa5NwhwccVqLfR*RxUyB3mazE61dXs5pGr*ZHm-WsRs0bkfYtJEpcTLl2VS2tGFcH8dG5HZspcLUt2ARlSY7MUROcO9iYhJmG-P1z3QQyDwF9qWqD7OwgbtDCebQz3-DY5UvrWeNy1HCIduoFG0cEjnCdRJ2g=
id:ab735a258a90e8e1-6bee54fcbd896b2a-e6f34473f892fb24433535c37e86dc18
name:畩靠
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=lh-qBwZqBa16oom5v-7BcGfyLIBPJNsvlNRhWeaKcjPkXlRg7foJ-MqSXBFPfSz9nGwaH0gb7A8LlvnxV2CNog==
.................................
title:我的Android面试经验总结
subtitle:关注我,你的眼睛会怀孕MVC,MVP和MVVMMVC通信方式,环形方式:1、View传送指令到Controller2、Controller起到不同层面间的组织作用,用于控制应用程序的流程.它处理事件并作出响应.“事件”包括用户的行为和数据Model上的改变.3、Model将新的数据发送到View,用户...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=NXYpqtVv4fKUBsqFpmpIR5CCHHrGvqE6kXYMOsigc3oyj3OyPsTNX5bpgdQsFXmjT2RKoo-EwS9*27ArD00CXQw1NM*Jm9fMzQyPoNLE1TpNx1lsF560TO5iqliDvj3Of8qFs**ac6OPR*7m053c7WaClXm7kf7hgHQtddNABEo=
id:ab735a258a90e8e1-6bee54fcbd896b2a-ad022736030ea3ac87cae32ae8668f46
name:IT大牛人
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=9gqKRZeyNAYOmC8LKClHnlInQNVhvVkRjZfPgtYSSsR9SXHOfO*4q1rMqKpqgjHOC5Fd2iIltr*sI2NHUJo9Pg==
.................................
title:【Android开发】微信支付不成功的几个原因
subtitle:微信支付一定要理解的几个概念:1导出应用签名区别于应用签名,使用debug.keystore密钥库,导出应用时进行签名2项目包名比如:com.shangmai.recovery3应用签名签名使用官网提供的工具——Gen_Signature_Android.apk,输入包名生成,比如:a04b960af8bf3b8bde86a25ecb791f844...
url:https://mp.weixin.qq.com/s?src=3&timestamp=1464274994&ver=1&signature=mBYIjZdjrG1qmlOCoKcg0dgGLXJwWtQHKn6lpkWYQv4H0-dKk9Nh7pnD*MEGrhec717brvxQizJp8hiCqkNJkrkuKFkXgpKl0ML1ghfBAreVRbHzVrEouiD06GPRqcmhJRtIe*24J0geYSCMhlJnG-2JuyfiQiBu7HUQaCEng88=
id:ab735a258a90e8e1-6bee54fcbd896b2a-9278f0323ae3e65971e0fcb37f275423
name:黑马程序员
aaurl:https://mp.weixin.qq.com/profile?src=3&timestamp=1464274994&ver=1&signature=oE87kQzfDF2iKcoD*anPFvLaTy5fRgzE1t2nu8NNMpVhXEAJ2G5qcI-UGK5mjUxxFBF2bFe50eD54Gdr9W7TqA==
.................................

后来发现上面抓到的文章链接有过期时间,如下图。

文章来自: https://hanks.pub