cheerio文档的api我将其分为以下几个方面,包括
加载(loading)
选择器(selectors)
属性操作(attributes)
结构推导(traversing)
结构操作(manipulation)
实用方法(Miscellaneous & Utilities)
在具体讲述各个api之前,我们给出一份html代码,这份html代码将会是我们下面所有api操作的示例代码。
在使用cheerio进行各种操作之前,我们需要首先加载一份html得到一个cherrio对象。比如
因为cheerio与jquery有着极其相似的语法,所以我们一般将得到的cheerio对象命名为<code>$</code>,装作它就是jquery对象,反正基本上用法都一样。
除了<code>.load()</code>方法之外,我们还可以使用<code>$( selector, [context], [root] )</code>这个api来获得部分html节点作为cheerio对象。比如
其中第一个参数就是我们获取的目标参数。所以<code>t1</code>得到是<code>ul</code>标签封装的cheerio对象,<code>t2</code>得到是3个<code>li</code>标签封装的cheerio对象的集合。
此外,我们在加载html时还可以设置一些配置参数,比如
关于cheerio的配置,一般我们用的较少,它默认的配置如下,
cheerio的选择器基本上跟jquery拥有一致的用法。如果你熟悉jquery,那你将会倍感亲切。
其中<code>selector</code>是目标选择器,<code>context</code>是目标选择器的上下文,<code>root</code>是上下文<code>context</code>的上下文。<code>selector</code>和<code>context</code>可以是字符串表达式、dom元素、dom元素集合、cheerio对象,而<code>root</code>一般都是html文档字符串。
一般地,我们通过cheerio操作html,都是以上面的这个api得到目标元素的cheerio对象开始,然后再进行各种操作。比如
cheerio提供了操作元素属性的一系列方法。
这个方法很简单,第二个参数是可选的。当只有第一个参数时表示获取属性的值,当有带有第二个参数时,表示设置属性的值。
通过<code>name</code>移除某一个属性,同时返回被移除的这个元素。
判断某元素的<code>class</code>中是否包含<code>className</code>。
给某元素添加一个名为<code>className</code>的样式名。
将某元素上名为<code>className</code>的样式名移除。如果不存在<code>className</code>,则移除所有的样式名。
可以像使用jquery那样使用cheerio,通过某一个元素来获取它的父元素、子元素、兄弟元素等等。
在某元素下查询满足选择条件的元素。
获取某元素的父元素。
获取某元素的下一个兄弟元素。
获取某元素的上一个兄弟元素。
获取某元素的所有同级元素。(当然除了它自己)
获取某元素的孩子节点。可以传入参数在所有的孩子节点中进行筛选。
和jquery类似的<code>each</code>迭代器,对每一个元素进行处理。
和jquery类似的<code>each</code>迭代器,对每一个元素进行处理并返回一个值。
在cheerio对象集合中进行条件筛选。
获取cheerio集合中的第一个cheerio对象。
获取cheerio集合中的最后一个cheerio对象。
根据索引获取cheerio集合中的某一个对象。参数可以使负数,表示从尾部开始索引。
cheerio提供一系列修改dom结构的方法。
将<code>content</code>插入到某元素中作为该元素的最后一个子元素。
将<code>content</code>插入到某元素中作为该元素的第一个子元素。
将<code>content</code>插入到某元素的后面,并作为其后面第一个兄弟节点。
将<code>content</code>插入到某元素的前面,并作为其前面的第一个兄弟节点。
移除某一个节点以及他们的孩子节点。
替换匹配的节点。
清空一个节点,移除其所有的孩子节点。
获取某节点的html字符串。如果传入参数,则设置该元素的html结构。
获取某节点的纯文本。
将cheerio对象集合转换成真正的数据结构。
克隆一个节点。
对某一cheerio对象的根节点进行相关操作。
检查<code>container</code>中是否是否包含<code>contained</code>元素。
End! All rights reserved <code>@gejiawen</code>.