如何在解析RSS Feed的description标签时排除图片div?
解决RSS Description中排除图片Div的内容提取问题
可以通过再次解析Description内的HTML内容实现需求,具体操作如下:
- 先获取Description标签内的CDATA文本内容
- 将这段文本传入BeautifulSoup,用
html.parser解析成HTML结构 - 定位到包含img标签的div元素并移除
- 提取剩余的纯文本内容
修改后的代码示例:
import requests from bs4 import BeautifulSoup resp = requests.get(url) soup = BeautifulSoup(resp.content, features="xml") items = soup.findAll('item') news_items = [] for item in items: news_item = {} news_item['title'] = item.title.text news_item['link'] = item.link.text news_item['pubDate'] = item.pubDate.text # 处理description中的内容 desc_raw = item.description.text desc_soup = BeautifulSoup(desc_raw, "html.parser") # 移除包含img的div target_div = desc_soup.find('div', img=True) if target_div: target_div.decompose() # 提取清理后的文本,可根据需求调整参数 news_item['description'] = desc_soup.get_text(strip=True, separator=' ') news_items.append(news_item)
补充说明
- 如果需要移除所有包含img的div,把
find改成find_all,循环处理每个匹配到的元素:for div in desc_soup.find_all('div', img=True): div.decompose() get_text()的参数可灵活调整:strip=True会去除文本首尾的空白字符,separator=' '用空格分隔不同段落的文本,避免内容堆叠。
内容的提问来源于stack exchange,提问作者NoIdea
相关产品推荐
相关产品推荐

