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

如何使用Wikipedia API获取维基百科信息框指定内容并解决图片加载错误

解决方案

实现思路

针对你遇到的两个问题,对应解决逻辑如下:

  • 筛选水平线下方内容:维基百科信息框内的分界线为<hr>标签,定位到该标签后调用nextAll()方法即可获取该标签之后所有的同级元素,正好对应你需要的从disease: Covid-19到Vaccinations的区间内容。
  • 解决图片加载报错:维基返回的HTML中图片路径为站内相对路径,未携带维基域名前缀,在你的站点下加载自然会找不到资源。直接提前移除信息框内所有<img>标签即可从根源避免报错和alt文本显示的问题。

可直接使用的修改后代码

let area = "Canada"
// 替换为HTTPS协议,避免部分浏览器拦截HTTP跨站请求
var url="https://en.wikipedia.org/w/api.php?action=parse&format=json&page=COVID-19_pandemic_in_"+area +"&redirects&prop=text&callback=?";
$.getJSON(url,function(data){
    const wikiHTML = data.parse.text["*"];
    const $wikiDOM = $("<document>"+wikiHTML+"</document>");
    // 定位信息框节点
    const $infobox = $wikiDOM.find('.infobox');
    // 移除所有图片元素
    $infobox.find('img').remove();
    // 定位第一个水平线标签,获取其后所有内容
    const $targetNodes = $infobox.find('hr').first().nextAll();
    // 如需将内容拼接为完整HTML字符串,使用以下方法
    const targetHTML = $targetNodes.map(function() {
        return this.outerHTML;
    }).get().join('');
    console.log(targetHTML);
})

补充说明

如果信息框内存在多条水平线,你可以替换hr.first()为更精准的筛选逻辑,比如根据相邻节点的文本内容匹配你需要的分界hr即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:00