You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Wikipedia API查询子分类时JS报错,求解决方案

解决维基百科分类查看器的JS报错问题

嘿,这个场景我熟!咱们直接针对你推测的问题来解决,同时保证图片正常获取:

  • 第一步:过滤掉带「(随机名称)」的异常子分类
    维基百科API返回的分类数据里,每个分类都有title字段。你可以在拿到返回结果后,先用数组的filter方法把那些标题包含「(随机名称)」的分类排除掉,再去处理剩下的有效分类。举个代码例子:

    // 假设你已经通过API拿到了目标页面的数据
    const pageData = response.data.query.pages[Object.keys(response.data.query.pages)[0]];
    
    // 过滤掉异常分类
    const validSubCategories = pageData.categories.filter(cat => {
      // 这里匹配你说的「(随机名称)」特征,注意括号是中文的
      return !cat.title.includes('(随机名称)');
    });
    
  • 第二步:独立处理图片获取,不受分类过滤影响
    图片数据在API返回的images字段里,和分类是完全独立的数据集。你可以单独提取图片列表,正常请求它们的详情(比如获取图片URL),完全不用管分类过滤的逻辑。示例代码:

    // 提取所有图片标题
    const imageTitles = pageData.images.map(img => img.title);
    
    // 循环获取每张图片的实际URL(这里调用维基的图片信息API)
    imageTitles.forEach(title => {
      fetch(`https://en.wikipedia.org/w/api.php?action=query&titles=${encodeURIComponent(title)}&prop=imageinfo&iiprop=url&format=json&origin=*`)
        .then(res => res.json())
        .then(imgData => {
          const imgPage = imgData.query.pages[Object.keys(imgData.query.pages)[0]];
          const imgUrl = imgPage.imageinfo[0].url;
          // 这里把图片URL渲染到页面上
          console.log('图片URL:', imgUrl);
        })
        .catch(err => console.warn('获取图片失败:', err));
    });
    
  • 额外防护:给分类处理加异常捕获
    为了避免还有其他没预料到的异常分类导致报错,你可以在处理每个有效分类时套个try-catch,这样单个分类的问题不会影响整个程序运行:

    validSubCategories.forEach(cat => {
      try {
        // 这里放你查询子分类的逻辑
        fetchSubCategoryDetails(cat.title);
      } catch (error) {
        console.warn(`处理分类 ${cat.title} 时出错,已跳过:`, error);
      }
    });
    

另外补充一句:维基百科API本身没有直接过滤分类标题的参数,所以在前端做过滤是最直接的方案。只要你把分类处理和图片处理的逻辑分开,就完全不会影响图片的正常获取啦。

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

火山引擎 最新活动