如何用Regex从IMDB页面提取genre纯文本 去除HTML标签
问题根因
原有代码存在两个核心错误:
- 字符串切割规则写的是匹配
<p class="genre">,但实际IMDB页面的类型内容存放在<span class="genre">标签内,切割逻辑完全不匹配 - 直接把BeautifulSoup解析得到的标签对象转成字符串做替换,属于冗余操作,BeautifulSoup原生支持提取标签内纯文本,不需要硬写正则、字符串切割,这类硬匹配方案容错率极低。
正确实现方案
直接调用标签对象的.text属性提取纯文本,再做简单的格式清理即可,不需要复杂正则:
# 提取影片类型 genre_tag = movie.find('span', class_="genre") if genre_tag: # 去除首尾换行、空白字符,统一逗号后加空格的格式 genre = genre_tag.text.strip().replace(",", ", ") else: genre = "Not Found" IMDB_dict[title].append(genre)
运行效果
代码执行后会直接返回你需要的纯文本结果:Drama, Fantasy, Horror,不会携带任何HTML标签、多余空行或者无关内容。
该实现的兼容性远高于字符串切割、正则匹配方案,只要IMDB页面中genre对应的span标签class属性不变,即使标签内部有其他微小结构调整也能正常提取内容。
内容的提问来源于stack exchange,提问作者luke
相关产品推荐
相关产品推荐

