今天,我们要讲的是如何用 JavaScript 批量获取微博评论。如果你想备份或者转移某个微博页面的评论内容,那么本博客对你而言,将会非常实用。
你可以在这里获取源代码:
https://github.com/lewis617/practical-node/blob/master/src/weiboBackup.js
示例代码
本文的示例代码非常简单,只有寥寥几行:
1 | /** |
是不是很短很开心?接下来我们来看下这几行 JavaScript 代码的使用方法。
使用方法
使用上述代码的方法非常简单,只需要:
1,打开微博页面,比如:http://www.weibo.com/2207255374/Eqkmf0pL4
我们可以看到一共有三条评论。
2,然后将上述 JavaScript 代码拷贝到浏览器的 console 面板中,并按回车键。结果打印了:
1 | Geo橙子:在过一阵子是不是要翻成英文,走出国门了 |
每条评论单独占一行,完美。
知识点解析
首先,我们获取评论的节点并将其转换为数组。这里使用了 Array.from 和 document.querySelectorAll 两个方法。后者返回符合选择器的所有节点,但格式为 NodeList。前者是 ES6 的方法,将 NodeList
转换为普通数组。
1 | var nodeArray = Array.from(document.querySelectorAll('.list_con .WB_text')); |
然后,我们遍历每个评论,并将评论中的文字、图片、链接都提取出来。其中用到了 nodeName、nodeValue、lastChild 这三个 Node
的属性。还用了 replace(/(\s+$)|(^\s+)/g, '')
来去除首尾的空格。还使用了数组的 join
方法来将数组项连接成字符串。
1 | var textArray = nodeArray.map(function (node) { |
最后,打印评论。
1 | console.log(textArray.join('\n')); |