Python如何用BeautifulSoup提取同名class下span标签内的Resale文本

实现代码
你可以直接沿用现有try-except逻辑调整匹配规则即可,以下是适配不同页面结构的几种写法:
写法1:匹配li标签内直接包含Resale文本的场景
try: resale_val = item.find("li", {"class": "keypoint"}, string=lambda t: t and "Resale" in t).text.strip() print("Resale :", resale_val) except AttributeError: print("Resale :", None)
写法2:Resale文本在li标签内部的span标签中的场景
try: li_node = item.find("li", {"class": "keypoint"}) resale_val = li_node.find("span", string=lambda t: t and "Resale" in t).text.strip() print("Resale :", resale_val) except AttributeError: print("Resale :", None)
写法3:如果Resale对应的li有固定title属性,可直接套用原有逻辑
把代码里的对应title值替换成实际页面里该li的title属性值即可:
try: print("Resale :", item.find("li", {'class': "keypoint", "title": "对应title值"}).text.strip()) except AttributeError: print("Resale :", None)
注意事项
- 只捕获
AttributeError而非所有异常,可避免吞掉代码拼写错误、变量未定义等问题,更方便调试 .strip()方法用于去除文本前后多余的空格、换行符,返回格式规整的结果- 匹配文本用lambda先判断text不为空,可避免空文本匹配时报错
内容的提问来源于stack exchange,提问作者Moon
相关产品推荐
相关产品推荐

