基于IDLE
遍历
标签树的下行遍历
- tag.contents:返回子节点的列表,tag的所有儿子节点(仅儿子)存入列表;
- tag.children:返回tag子节点的迭代类型,循环遍历儿子(仅儿子),不同于contents不是用列表存子节点,用迭代器循环子节点;
(注意:.contents和.children的子节点包括字符串’\n’) - tag.descendants:tag子孙节点的迭代,包含tag所有子孙节点。
(注意:遍历只能从一个根节点开始,森林没法遍历)
示例HTML:
<div class="nav_cont">
<ul>
<li><a href="https://www.qb5.tw" title="全本小说网首页">首页</a></li>
<li><a href="https://www.qb5.tw/fenlei/1_1/" title="玄幻魔法">玄幻魔法</a></li>
<li><a href="https://www.qb5.tw/top/monthvisit/" title="热门小说">热门小说</a></li>
ul>
<ul>
<li><a href="https://www.qb5.tw" title="全本小说网登录页">登录</a></li>
<li><a href="https://www.qb5.tw/fenlei/1_1/" title="变形金刚">变形金刚</a></li>
<li><a href="https://www.qb5.tw/top/monthvisit/" title="神庙逃亡">神庙逃亡</a></li>
</ul>
</div>
标签树:1.soup.div.contents
得到div的两个儿子标签<ul>
2. soup.div.children
得到div的两个儿子标签<ul>
3. soup.div.descendant
得到div的20个子孙标签
属性与方法
五种属性
基本元素 | 说明 | 例子 |
---|---|---|
Tag | 标签,最基本信息组织单位 | soup.tag获得tag里面的内容 |
Name | 标签的名称 | tag.name#获得tag名,tag.parent.name#获得tag的父亲名字 |
Attributes | 标签的属性 | tag.attrs#获得标签字典类型的属性,tag.attrs[‘class’]#获得属性class关键字的值 |
NavigableString | 标签内非属性字符串 | tag.string #类型是NavigableString |
Comment | 标签内字符串的注释部分 | tag.string#获得注释内的字符串,注释以<!–开始 |
查找方法.find_all()
soup.find_all(name, attrs, True/False, string, **kwargs)
- fand_all返回列表,把查找到的标签放入列表
- name:标签名字,eg:‘p’,若多个标签用[‘a’,‘p’]列表形式;
- attrs:标签属性,id=“”,href=“”,但是不能用class = “” ?,可以严格匹配,也可以用正则表达式,id = re.compile(“b”)可以返回id中b开头的所有标签;
- string:表示<></>中的字符串,严格匹配/正则表达;
- True/False:默认True,表示从当前开始的所有子孙,false为当前的所有子节点;
【注】:html代码在全民小说网爬取部分,网站访问时允许爬虫,且博文不进行商业行为仅为学习指导记录。