扫码关注官方订阅号
业精于勤,荒于嬉;行成于思,毁于随。
title_node=soup.find('i',class_="time-icon").find("em")你这个是 bs4 的 css 选择器,不是 正则。
title_node=soup.find('i',class_="time-icon").find("em")
<i class="time-icon"></i><em>5课时 39分钟</em>
你仔细看标签元素的层次关系, i 和 em 是平级的,em 并不是 i 的子元素。所以,你的 find 方法是找不到 em 的。
i
em
给个正则的例子:
html='''<html> <p class="timeandicon"> <p 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> </p> </p> <p class="timeandicon"> <p 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> </p> </p> <html>''' import re ptn = re.compile(r'<p[^>]*?class="cf".*?<dl>.*?' r'<em>([^<]*?)</em>.*?' # 课时 r'<em>([^<]*?)</em>.*?' # 级别 r'</dl>.*?</p>' ,re.S) mch = ptn.findall(html) keys = ('课时', '级别') info = [dict(zip(keys, data)) for data in mch] print(info)
结果:
[{'级别': '中级', '课时': '5课时 39分钟'}, {'级别': '中级', '课时': '14课时 37分钟'}]
你的文本里是 timeandicon
timeandicon
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
title_node=soup.find('i',class_="time-icon").find("em")你这个是 bs4 的 css 选择器,不是 正则。
你仔细看标签元素的层次关系,
i和em是平级的,em并不是i的子元素。所以,你的 find 方法是找不到
em的。给个正则的例子:
结果:
你的文本里是
timeandicon