使用BeautifulSoup解析维基百科页面无法获取摘要段落的求助
解决维基百科摘要提取无输出的问题
嘿,我来帮你排查下问题~你遇到的情况其实是因为维基百科的页面结构里,第一个<p>标签并不是你要的正文摘要——页面顶部可能存在一些用于布局或辅助功能的空<p>标签,直接用soup.find('p')拿到的就是这个空标签,所以.getText()自然没有输出。
给你两个关键的修改思路,附修改后的代码:
1. 精准定位正文容器
维基百科的所有正文内容都包裹在class="mw-content-text"的<div>里,先锁定这个区域再找段落,就能避开页面其他无关的元素。
2. 过滤空段落
即使在正文容器里,也可能存在空的<p>标签,所以需要遍历所有<p>,找到第一个包含非空文本的段落。
修改后的代码
from bs4 import BeautifulSoup import urllib2 url = "https://en.wikipedia.org/wiki/Vicia_faba" print url source = urllib2.urlopen(url) soup = BeautifulSoup(source, 'lxml') # 先定位到维基百科的正文内容容器 content_container = soup.find('div', class_='mw-content-text') # 遍历容器内的所有p标签,提取第一个非空的文本内容 summary = "" for paragraph in content_container.find_all('p'): clean_text = paragraph.getText().strip() if clean_text: summary = clean_text break print summary
这样运行后,你就能拿到页面里真正的第一段摘要了~另外补充一句:如果是用Python 3的话,urllib2已经被替换成urllib.request,需要把导入和请求代码改成import urllib.request和source = urllib.request.urlopen(url)哦。
内容的提问来源于stack exchange,提问作者maurobio
相关产品推荐
相关产品推荐

