有一个文本
<html>
<div class="timeandicon">
<div class="cf">
<dl>
<dd class="mar-b8"><i class="time-icon"></i><em>5课时 39分钟</em>
</dd>
<dd class="zhongji">
<i class="xinhao-icon2"></i><em>中级</em>
</dd>
</dl>
<em class="learn-number">578人学习</em>
</div>
</div>
<div class="timeandicon">
<div class="cf">
<dl>
<dd class="mar-b8"><i class="time-icon"></i><em>14课时 37分钟</em>
</dd>
<dd class="zhongji">
<i class="xinhao-icon2"></i><em>中级</em>
</dd>
</dl>
<em class="learn-number">50228人学习</em>
</div>
</div>
<html>
想把他匹配进一个字典test
test['keshi']=['5课时 39分钟','14课时 37分钟']
test['level']=['中级','中级']这样的
看了慕课的教程。里面说
title_node=soup.find('i',class_="time-icon").find("em")
视频中是这样写的 但是我运行出错是什么原因,还有没有别的方法去匹配??
title_node=soup.find('i',class_="time-icon").find("em")
你这个是 bs4 的 css 选择器,不是 正则。
你仔细看标签元素的层次关系,
i
和em
是平级的,em
并不是i
的子元素。所以,你的 find 方法是找不到
em
的。给个正则的例子:
结果: