Python removesuffix函数无法正常工作:维基百科爬虫文本处理疑问
爬取维基百科特色文章时去除末尾"(Full article...)"的问题解决方法
问题场景
我编写了一个爬取维基百科首页当日特色文章并打印的Python程序:
import requests from bs4 import BeautifulSoup url = 'https://en.wikipedia.org/wiki/Main_Page' response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') element = soup.find('div', {'id': 'mp-tfa'}) output = element.p.get_text()
添加print(output)后,输出内容末尾带有"(Full article...)"。尝试使用print(output.removesuffix(' (Full article...'))去除该文本,但并未生效。
解决办法
你用removesuffix没生效大概率是因为实际抓取到的末尾文本和你传入的字符串不完全匹配——比如省略号格式不同、末尾有隐藏空格,或者"(Full article...)"本身是嵌套在<a>标签里的,get_text()会把它和前面的文本强制合并,导致精确匹配失败。这里提供两种靠谱的解决方式:
方法1:精准剔除目标标签后提取文本
因为"(Full article...)"是放在<div id="mp-tfa">下的<a>标签内,直接移除这个标签再提取文本是最稳妥的方式:
import requests from bs4 import BeautifulSoup url = 'https://en.wikipedia.org/wiki/Main_Page' response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') element = soup.find('div', {'id': 'mp-tfa'}) # 定位并移除Full article链接标签 full_article_tag = element.find('a', string='Full article...') if full_article_tag: full_article_tag.extract() # 提取文本并去除首尾空白 output = element.p.get_text(strip=True) print(output)
方法2:字符串替换(容错性更强)
如果倾向于用字符串处理,使用replace直接替换目标内容,比removesuffix的容错性更高,能兼容一些格式差异:
# 在原代码基础上修改打印部分 print(output.replace(' (Full article...)', '').strip())
内容的提问来源于stack exchange,提问作者bfnxjdjd
相关产品推荐
相关产品推荐

