如何使用BeautifulSoup的select()方法获取最新帖子的正文内容
如何用BeautifulSoup提取最新帖子的正文文本?
我懂你的问题——原来的选择器绑定了特定帖子的ID,没法适配最新帖子,改成#flagArticle后虽然拿到了整个文章区块,但里面混了投票按钮这些无关内容,只想提取纯正文对吧?
看你给出的HTML结构,正文内容其实是嵌套在#flagArticle下的一个带有rhymix_content和xe_content类的div里(那个带数字的class是动态生成的帖子ID,不用管它)。我们可以用更通用的选择器定位到这个容器,再提取里面的文本。
修改后的代码片段
把你原来处理正文的部分替换成下面的代码:
# 获取最新帖子的正文容器(忽略动态生成的数字class) maintext_container = t_soup.select_one('#flagArticle div.rhymix_content.xe_content') if maintext_container: # 提取正文文本,用换行分隔段落,自动去除多余空格和换行 main_text = maintext_container.get_text(separator='\n', strip=True) print(main_text) else: print("未找到正文内容")
关键说明
- 用
select_one代替select:我们只需要一个正文容器,select_one直接返回单个元素,不用处理空列表或者索引的问题,更简洁。 - 通用选择器:
#flagArticle div.rhymix_content.xe_content会匹配flagArticle下所有同时包含rhymix_content和xe_content类的div,不管它有没有那个带数字的动态class,这样就能适配任何最新帖子了。 - 文本提取优化:
get_text(separator='\n', strip=True)会把每个<p>标签的内容用换行分隔,同时去掉文本首尾的多余空格和换行,输出的格式更干净。
内容的提问来源于stack exchange,提问作者vantabeam
相关产品推荐
相关产品推荐

