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. [UOJ#245][UER#7]天路(近似算法)

    允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x ...

  2. Problem A: 象棋比赛

    Description 1月6日,教职工象棋协会在6号楼办了一次比赛,很多老师都参加了.比赛共进行了5轮,赢1局积3分,和了1分,输了0分,你能帮忙算一下各位老师的积分吗? Input 多组测试数据, ...

  3. bzoj 1312 最大密度子图

    晕,m=0是要输出1(弄的我还找管理员要数据,但明显题意是叫我们输出0呀) 最大密度子图,把边转换成点,然后二分答案,跑最大权闭合子图判定是否可行. #include <cstdio> # ...

  4. Educational Codeforces Round 13 C. Joty and Chocolate 水题

    C. Joty and Chocolate 题目连接: http://www.codeforces.com/contest/678/problem/C Description Little Joty ...

  5. Codeforces Round #222 (Div. 1) A. Maze dfs

    A. Maze 题目连接: http://codeforces.com/contest/377/problem/A Description Pavel loves grid mazes. A grid ...

  6. 2016 UESTC DP专题题解

    题解下载地址:http://pan.baidu.com/s/1eSx27Jk 题解下载地址:http://pan.baidu.com/s/1qYDxlhi

  7. BZOJ 1022 [SHOI2008]小约翰的游戏John AntiNim游戏

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1475  Solved: 932[Submit][ ...

  8. 使用LibZ合并.Net程序集,支持WPF

    最近写了一个小的WPF程序,发布的时候发现依赖着两三个20~30k的小dll的,感觉有点不爽,就想把它合并一下.以前在WinForm下用过微软的ILMerge合并程序集,不过记得它对WPF程序支持不大 ...

  9. 7407 74LS07 74LV07 74LVC07

    SN7407 Convert TTL Voltage Levels to MOS LevelsHigh Sink-Current CapabilityInput Clamping Diodes Sim ...

  10. 在一台服务器上搭建多个项目的SVN

    需求:一台机子,多个项目,项目之间用户独立不可以相互访问文件 思路:在机子上设置多个代码仓库,用不同的端口号加一区分 实现: 首先安装SVN,我这里使用的是TortoiseSVN 首先创建多个SVN代 ...