You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次使用BeautifulSoup,如何提取Wikipedia页面指定div下的ul/li元素?

解决BeautifulSoup定位Wikipedia特定div下ul/li的问题

别担心,刚上手BeautifulSoup遇到这种定位问题太正常了!我来一步步帮你精准锁定目标元素~

第一步:先获取并解析页面内容

首先得把Wikipedia页面的HTML拉下来,再用BeautifulSoup解析成可操作的对象。示例代码如下:

import requests
from bs4 import BeautifulSoup

# 替换成你要抓取的Wikipedia页面URL
target_url = "https://en.wikipedia.org/wiki/Your_Target_Page"

# 加个User-Agent避免被反爬(很多网站会拦截无标识的请求)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

response = requests.get(target_url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

第二步:定位到mw-parser-output的div

这是关键一步,我们要先把范围缩小到这个特定的div里,避免抓到页面其他区域的ul/li。因为class是Python的关键字,所以BeautifulSoup里用class_来指定类名:

# 找到目标div
parser_div = soup.find('div', class_='mw-parser-output')

如果怕找不到(比如页面结构变了),可以加个判断:

if not parser_div:
    print("没找到mw-parser-output的div,检查页面结构或者URL是否正确!")
    exit()

第三步:提取div下的ul和li元素

现在就可以在这个div范围内查找你要的元素了,分两种常见场景:

场景1:获取所有ul,再遍历每个ul里的li

适合你需要按列表组来处理内容的情况:

# 获取div下所有的ul标签
all_ul_lists = parser_div.find_all('ul')

# 遍历每个ul,提取里面的li文本
for ul in all_ul_lists:
    li_items = ul.find_all('li')
    for li in li_items:
        # strip=True可以去掉文本前后的空格和换行
        print(li.get_text(strip=True))

场景2:直接获取div下所有层级的li

如果不管嵌套关系,只要这个div里的所有li,直接用find_all就行:

# 获取div下所有的li标签(包括嵌套在其他标签里的)
all_li_items = parser_div.find_all('li')

for li in all_li_items:
    print(li.get_text(strip=True))

小提示

如果遇到某些li里还有子标签(比如链接、粗体),你可以用li.contents或者遍历li的子元素来提取更精准的内容,比如只取纯文本部分。

内容的提问来源于stack exchange,提问作者grigs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:11:14