cheerio的API挺多,我也瞭解有限,欲知詳情請參考 「通讀cheerio API」。php
下面就事論事聊聊它的基本使用。html
好比說在某網頁中有這麼一段HTML:node
</tbody> <tbody id="stickthread_8349137" class="bs_bg1" > <tr> <td class="icon"> <a href="chat.php?tid=8349137" title="聊天模式" target="_blank"><img src="images/icons/icon6.gif" alt="Icon15" class="icon" /></a> </td> <th class="hot" > <label> <img src="images/2008/pin_1.gif" alt="本版置頂" title="本版置頂"/> </label> <em>[<a href="forumdisplay.php?fid=8&filter=type&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="images/attachicons/common.gif" alt="附件" title="附件" class="attach" /> <span class="threadpages"> <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&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&username=%D6%F1%D4%B0%C7%E5">竹園清</a></cite> <em><a href="redirect.php?tid=8349137&goto=lastpost#lastpost"><font class="ad_hong">今天 20:33</font></a></em> </td> </tr> </tbody>
注意上面代碼中加粗加下劃線的三個部分,它們是:數組
thread-8349137-1-1.html
2018年4月25日實時看盤交流
14dom
這三個量分別對應了帖子的地址,標題和共多少頁,若是要用cheerio取到它們該如何呢,請見代碼:post
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); // 加入數組 } })
這樣就找到了須要的三個值。ui