cheerio的API挺多,我也了解有限,欲知详情请参考 “通读cheerio API”。

下面就事论事聊聊它的基本使用。

比如说在某网页中有这么一段HTML:

</tbody>        <tbody id="stickthread_8349137"   class="bs_bg1" >
            <tr>
                <td class="icon">
                                    <a href="chat.php?tid=8349137" title="聊天模式" target="_blank"><img src="data:images/icons/icon6.gif" alt="Icon15" class="icon" /></a>
                                </td>
                <th class="hot" >
                    <label>
                                                                <img src="data:images/2008/pin_1.gif" alt="本版置顶" title="本版置顶"/>
                                         </label>
                                                            <em>[<a href="forumdisplay.php?fid=8&amp;filter=type&amp;typeid=48">看盘</a>]</em>                                        <span id="thread_8349137" class="forumdisplay"><a href="thread-8349137-1-1.html" style="font-weight: bold;color: hotpink" target="_blank"> 2018年4月25日实时看盘交流 </a></span>
                                                                                    <img src="data:images/attachicons/common.gif" alt="附件" title="附件" class="attach" />

                                                                <span class="threadpages"> &nbsp; <a href="thread-8349137-2-1.html">2</a> <a href="thread-8349137-3-1.html">3</a> <a href="thread-8349137-4-1.html">4</a> <a href="thread-8349137-5-1.html">5</a> <a href="thread-8349137-6-1.html">6</a>  .. <a href="thread-8349137-14-1.html">14</a> </span>

                                                        </th>
                <td class="author">
                    <cite>
                                            <a href="space.php?action=viewpro&amp;uid=2713715">美人鱼苗苗</a>
                                        </cite>
                                                                                                    <em class="ad_hong" >2018-4-24</em>
                                    </td>
                <td class="nums"><strong>267</strong><em>4911</em></td>
                <td class="lastpost">
                    <cite><a href="space.php?action=viewpro&amp;username=%D6%F1%D4%B0%C7%E5">竹园清</a></cite>
                                                              <em><a href="redirect.php?tid=8349137&amp;goto=lastpost#lastpost"><font class="ad_hong">今天&nbsp;20:33</font></a></em>
                                    </td>
            </tr>
        </tbody>

注意上面代码中加粗加下划线的三个部分,它们是:

thread-8349137-1-1.html
2018年4月25日实时看盘交流
14

这三个量分别对应了帖子的地址,标题和共多少页,如果要用cheerio取到它们该如何呢,请见代码:

            var buffer = Buffer.concat(html);

            var body = iconv.decode(buffer,'gb2312');
            var $ = cheerio.load(body);     // 这个$是整个网页的dom      

            $("tbody").each(function(index,element){ // 先找到tody节点
                var $tbody=cheerio.load($(element).html());

                var topic={};
                topic.pageCount=1;
                topic.url=null;
                topic.title=null;

                $tbody(".forumdisplay a").each(function(index,element){     // 再找tbody节点里的class=forumdisplay里面的链接
                    var topicUrl='http://www.55188.com/'+$tbody(element).attr("href"); // 得到链接的属性(第一项)
                    var topicTitle=$tbody(element).text();// 得到链接的文字(第二项)

                    topic.url=topicUrl
                    topic.title=topicTitle;
                })

                $tbody(".threadpages").each(function(index,element){  // 再找tbody节点里的class=threadpages节点
                    topic.pageCount=$tbody(element).children().last().text();// 找到最后一个子节点的文字(第三项)
                })

                if(topic.url!=null && topic.title!=null){
                    topics.push(topic);    // 加入数组
                }
            })

这样就找到了需要的三个值。

【Nodejs】cheerio简单示例的更多相关文章

  1. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  2. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  3. Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例

    前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...

  4. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  5. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  6. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  7. 根据juery CSS点击一个标签弹出一个遮罩层的简单示例

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  9. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

随机推荐

  1. codevs 5790 素数序数

    5790 素数序数(筛素数版) 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold       题目描述 Description 给定一个整数n,保证n为正整数且在int范 ...

  2. 80X86指令总结

    一.数据传送指令 指令名称 汇编语句格式 功能 影响标志位 传送move data mov opd, ops (ops) → opd:分为主存储器.通用寄存器.段寄存器,不可同时使用主存储器,类型要匹 ...

  3. Android优化之软引用和弱引用

    Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用.这里重点介绍一下软引用和弱引用. 如果一 ...

  4. bzoj 2011

    决策单调性,对于一个1D/1D(状态是一维,转移也是一维)的DP,如果DP的决策具有单调性,那么就可以做到O(nlogn)的复杂度完成DP. 感谢<1D/1D  动态规划优化初步>的作者. ...

  5. BZOJ 3876: [Ahoi2014]支线剧情 带下界的费用流

    3876: [Ahoi2014]支线剧情 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3876 Description [故事背景] 宅 ...

  6. BZOJ 1854: [Scoi2010]游戏 并查集

    1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2672  Solved: 958[Submit][Status][ ...

  7. Codechef December Challenge 2014 Chef and Apple Trees 水题

    Chef and Apple Trees Chef loves to prepare delicious dishes. This time, Chef has decided to prepare ...

  8. 关于List Map Set的线程安全的问题

    常见的ArrayList  LinkedList  HashMap TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet 都是线程不安全的.如果要使用 ...

  9. 小程序navigator点击有时候会闪一下

    <navigator hover-class="none">

  10. 全栈project师体能备战--知识面(1--10)

    javascript 单例设计模式:         单例模式确保某个类仅仅有一个势力,并且自行实例化并向整个系统提供这个实例.如:cocos2dx中的导演类.[样例]我有6哥美丽的老婆,他们的老公都 ...