如何缩小soup.find结果范围,提取维基足球球员infobox高亮文本?
问题
每个足球运动员的维基百科页面都设有infobox模块,用于展示职业生涯信息。我的目标是抓取这些页面中的高亮数据,目前已能输出infobox段文本,但仅需其中的高亮内容,请问如何缩小结果范围以只获取该部分文本?
解决方案
基于HTML结构直接提取:维基百科infobox里的高亮内容普遍用
<b>或<strong>标签包裹,如果你是用爬虫工具(比如BeautifulSoup)处理渲染后的HTML,可以直接在已获取的infobox节点下筛选这类标签的文本:from bs4 import BeautifulSoup # infobox_html为你已获取的infobox段HTML文本 soup = BeautifulSoup(infobox_html, 'html.parser') highlighted_content = [tag.get_text(strip=True) for tag in soup.find_all(['b', 'strong'])]从维基原始wikitext匹配:如果抓取的是维基百科的原始编辑文本(wikitext),高亮内容是用
'''三重单引号'''包裹的,直接用正则表达式匹配提取:import re # infobox_wikitext为你已获取的infobox段原始文本 match_pattern = r"'''(.*?)'''" highlighted_content = re.findall(match_pattern, infobox_wikitext)精准定位目标字段的高亮内容:如果只需要特定字段的高亮信息(比如国籍、当前俱乐部),可以先定位infobox内对应字段的行,再提取该行内的加粗部分。比如用BeautifulSoup先找到包含目标字段的节点,再从中筛选
<b>/<strong>标签内容。
内容的提问来源于stack exchange,提问作者Moreno
相关产品推荐
相关产品推荐

