如何用BeautifulSoup提取维基段落内容并标记含链接文本
解决方案
当然可以实现同时提取段落文本并标记其中的维基链接词汇,具体代码如下:
from urllib import request from bs4 import BeautifulSoup # 获取页面内容并解析 soup = BeautifulSoup(request.urlopen("https://en.wikipedia.org/wiki/Lana_Del_Rey").read(), "html.parser") # 遍历所有段落标签 for p_tag in soup.select('p'): result = [] # 遍历段落内的每个子节点 for node in p_tag.contents: if node.name == 'a' and node.get('href', '').startswith('/wiki/'): # 对符合条件的链接文本添加标记 result.append(f"START_A {node.text.strip()} END_A") elif node.string: # 普通文本直接添加 result.append(node.string.strip()) # 拼接成完整段落并输出 full_text = ' '.join(result) if full_text: print(f"<p>{full_text}</p>")
代码说明
- 核心逻辑是遍历每个
<p>标签的所有子节点,区分普通文本节点和符合要求的<a>标签节点 - 仅对
href以/wiki/开头的链接文本添加START_A和END_A标记 - 最后将所有节点内容拼接成完整的段落文本,保留原语义结构
内容的提问来源于stack exchange,提问作者Aiha
相关产品推荐
相关产品推荐

