首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么这个Wikipedia mediawiki api请求不将类别返回到所有链接?

为什么这个Wikipedia mediawiki api请求不将类别返回到所有链接?
EN

Stack Overflow用户
提问于 2014-06-19 08:28:57
回答 1查看 801关注 0票数 1

我试图从一个给定的维基百科页面获得所有的外发链接到其他维基百科文章和它们各自的分类。

不知何故,许多页面被返回w/o类别,尽管它们显然属于某些页面。它甚至似乎并不是系统性的,即没有类别返回的页面并不总是相同的。

下面的示例是我所能做的最小的例子:

代码语言:javascript
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
import urllib.request
import urllib.parse
import json

def link_request(more_parameters={"continue": ""}):
   parameters = {"format": "json",
                 "action": "query",
                 "generator": "links",
                 "gpllimit": "max",
                 "gplnamespace": "0",
                 "prop": "categories",
                 "cllimit": "max",
                 "titles": urllib.parse.quote(start_page.encode("utf8"))}
   parameters.update(more_parameters)

   queryString = "&".join("%s=%s" % (k, v) for k, v in parameters.items())

   # This ensures that redirects are followed automatically, documented here:
   # http://www.mediawiki.org/wiki/API:Query#Resolving_redirects
   queryString = queryString+"&redirects"

   url = "http://%s.wikipedia.org/w/api.php?%s" % (wikipedia_language, queryString)
   print(url)

   #get json data from wikimedia API and make a dictionary out of it:
   request = urllib.request.urlopen(url)
   encoding = request.headers.get_content_charset()
   jsonData = request.read().decode(encoding)
   data = json.loads(jsonData)

   return data

def get_link_data():
   data=link_request()

   query_result=data['query']['pages']

   while 'continue' in data.keys():
      continue_dict=dict()
      for key in list(data['continue'].keys()):
         if key == 'continue':
            continue_dict.update({key: data['continue'][key]})
         else:
            val= "|".join([urllib.parse.quote(e) for e in data['continue'][key].split('|')])
            continue_dict.update({key: val})
      data=link_request(continue_dict)
      query_result.update(data['query']['pages'])

   print(json.dumps(query_result, indent=4))

start_page="Albert Einstein"
wikipedia_language="en"
get_link_data()

如果有人想知道:继续的东西在这里解释:查询

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 05:22:35

问题是,由于连续性的工作方式,您不能只对结果进行update()并期望它工作。

例如,假设您有以下带有类别的链接页面:

  • 第1页
    • 类别1

  • 第2页
    • 2A类
    • 2B类

  • 第3页
    • 第3类

现在,如果将gpllimitcllimit设置为2(即每个响应最多包含两个页面,最多包含两个类别),则结果将跨三个连续响应,如下所示:

  • 响应1
    • 第1页
      • 类别1

代码语言:javascript
运行
AI代码解释
复制
- page 2 
    - category 2A

  • 响应2
    • 第1页
    • 第2页
      • 2B类

  • 响应3
    • 第3页
      • 第3类

如果要使用update()组合这些响应,那么响应2的结果将覆盖响应1的结果:

  • 第1页
  • 第2页
    • 2B类

  • 第3页
    • 第3类

因此,您需要做的是使用一种更聪明的方法来组合响应。或者更好的是使用访问API的现有库之一

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24311738

复制
相关文章
istio 常见异常分析
istio 支持多平台,不过 Istio 和 k8s 的兼容性是最优的,不管是设计理念,核心团队还是社区, 都有一脉相承的意思。但 istio 和 k8s 的适配并非完全没有冲突, 一个典型问题就是 istio 需要 k8s service 按照协议进行端口命名(port naming)。
钟华
2020/03/09
3.7K1
腾讯云-Istio案例分析: 业务pod连接数据库超时
进入到容器中通过命令去测试是可以直接连上, 通过entrypoint 挂载命令连接失败,用户是用了istio作为服务治理
朱瑞卿
2020/11/13
2.2K0
腾讯云-Istio案例分析: 业务pod连接数据库超时
K8S容器应用优雅关闭-修复5003 Error
公司某服务接入效能平台后,发布过程中,页面偶尔会出现5003报错,开始以为是Nacos没有及时的将服务反注册,即POD在已经正常关闭的情况下,注册中心依然有POD信息,请求依然到已经关闭的POD中导致
运维部落
2021/12/31
9370
K8S容器应用优雅关闭-修复5003 Error
istio服务网格技术解析与实践(istio apigateway)
istio的第二篇主要介绍流量管理 1.前言 Istio的流量路由规则允许您轻松控制服务之间的流量和api调用。ISTIO简化了诸如断路器、超时和重试等服务级别属性的配置,并使设置重要任务(如A/B测试、金丝雀卷展和具有基于百分比的流量分割的分阶段卷展)变得容易。它还提供了开箱即用的故障恢复功能,有助于使您的应用程序在从属服务或网络故障时更加健壮。
全栈程序员站长
2022/07/25
1.4K0
istio服务网格技术解析与实践(istio apigateway)
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.1K0
spring-boot-istio:能自动在k8s上创建Istio资源的SpringBoot库
这个Spring Boot Istio库是专门为Spring Boot应用准备的。一旦这个库被加入你的应用并启用,它就会根据代码和注解字段@EnableIstio在当前Kubernetes集群上创建Istio资源。 Maven:
lyb-geek
2023/09/05
5160
spring-boot-istio:能自动在k8s上创建Istio资源的SpringBoot库
从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh
文章的名字起的有点纠结,实际上这是一篇真正从基础开始讲解,并试图串联起来现有一些流行技术的入门文章。 目前的企业级运营市场,很有点早几年前端工程师所面临的那样的窘境。一方面大量令人兴奋的新技术新方案层出不穷;另外一方面运维人员也往往陷入了选择困局,艰于决策也疲惫于跟踪技术的发展。 目前的网络上已经有很多新技术的介绍文章和培训资料——绝大多数讲的比我要好得多。 因为工作原因,我有比较多的用户服务经验。所以我要说的是,写这篇文章的原因,不是因为现有资料不够好。而是这些资料大多都是从技术本身出发,不断的说“我可以提供A、我可以提供B、还有我的特征C也不错”。而忘记了问,用户想要的是什么,用户想解决的问题是什么。 所以不同于通常的技术文章使用技术本身串起来所有的内容,本文试图通过需求和技术的互动发展来串起来运维技术的发展历程。 在整体系统中,开发和运维都是很重要的,所以现在DevOps的理念早已深入人心。但本文并不讲解开发部分的内容,这里只集注在运维架构的演进方面。 即便如此,运维也是非常大的一个话题,所以我的目标再缩小一些,只限定在基础系统软件的领域。
俺踏月色而来
2019/03/22
2.6K0
从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh
springboot项目在docker容器中如何优雅关闭
是否所有项目都需要优雅关闭?那也不一定,毕竟所谓的优雅关闭,另一面就意味这关闭得慢,因此项目的优雅关闭得看项目的核心程度,换言之就是看该项目处理的数据是不是核心数据,其实项目的最终本质,是对数据的处理。
lyb-geek
2021/01/15
3K0
springboot项目在docker容器中如何优雅关闭
springboot项目在docker容器中如何优雅关闭
是否所有项目都需要优雅关闭?那也不一定,毕竟所谓的优雅关闭,另一面就意味这关闭得慢,因此项目的优雅关闭得看项目的核心程度,换言之就是看该项目处理的数据是不是核心数据,其实项目的最终本质,是对数据的处理。
lyb-geek
2022/01/06
3K1
springboot项目在docker容器中如何优雅关闭
使用kind在mac本地搭建k8s及istio
之前使用multipass装ubuntu,然后再用microk8s搭建k8s,这会直接用orbstack及kind在本地搭建k8s及istio
code4it
2023/08/31
4390
使用kind在mac本地搭建k8s及istio
使用kind在mac本地搭建k8s及istio
之前使用multipass装ubuntu,然后再用microk8s搭建k8s,这会直接用orbstack及kind在本地搭建k8s及istio
code4it
2023/07/31
9930
使用kind在mac本地搭建k8s及istio
重磅!K8S 1.18版本将内置支持SideCar容器。
Kubernetes的目标不仅是使分布式应用程序的部署和运维变得简单可靠,还旨在能轻松地创建“云原生”应用程序,即易于创建在云环境中运行的分布式应用程序和服务,于是从1.18版本开始K8S将原生支持生命周期类型为SideCar的容器。
架构师修行之路
2020/02/20
2.9K0
重磅!K8S 1.18版本将内置支持SideCar容器。
重磅!K8S 1.18版本将内置支持SideCar容器。
Kubernetes的目标不仅是使分布式应用程序的部署和运维变得简单可靠,还旨在能轻松地创建“云原生”应用程序,即易于创建在云环境中运行的分布式应用程序和服务,于是从1.18版本开始K8S将原生支持生命周期类型为SideCar的容器。
justmine
2020/02/18
2K0
Istio中K8S的API
本篇文章主要来介绍,Istio里面常用的API与K8S里面的CR(Custom Resource)的对应关系,并描述它们是干什么的。
灰子学技术
2021/08/27
5240
Istio中K8S的API
开源云原生平台对比 KubeSphere vs Rainbond
最近因为工作需要,需要找一个功能完善的云原生应用平台,经过自己筛选和朋友推荐,剩下 KubeSphere和Rainbond ,这两个产品都是基于 Kubernetes 之上构建的云原生应用平台,功能都非常强大,但产品定位和功能侧重不同,本文将介绍我在选型过程中从各维度对比两款产品的过程记录。
Rainbond开源
2022/10/14
2.2K2
istio解决了什么问题(istio k8s)
通过istio实现灰度发布,浏览器访问报404错误,但是通过curl传递一个Host请求头就能访问成功。
全栈程序员站长
2022/07/31
3180
istio解决了什么问题(istio k8s)
开源云原生平台 KubeSphere 与 Rainbond 对比
最近因为工作需要,需要找一个功能完善的云原生应用平台,经过自己筛选和朋友推荐,剩下 KubeSphere 和 Rainbond,这两个产品都是基于 Kubernetes 之上构建的云原生应用平台,功能都非常强大,但产品定位和功能侧重不同,本文将介绍我在选型过程中从各维度对比两款产品的过程记录。
我是阳明
2022/12/29
2.1K0
开源云原生平台 KubeSphere 与 Rainbond 对比
docker停止运行中的容器(docker关闭容器)
centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了
全栈程序员站长
2022/07/25
8.7K0
docker停止运行中的容器(docker关闭容器)
Service Mesh在接入层流量管理的应用
[1] https://k8s.io/docs/concepts/services-networking/ingress
Kevinello
2022/08/19
5200
Service Mesh在接入层流量管理的应用
Dubbo 在 K8s 下的思考
Dubbo 在 2011 开源之后,一直是国内最受欢迎的 RPC 框架,之后 Spring Boot 和 Spring Cloud 的面世,助推了微服务的火热程度。计算机的世界变化很快,自从容器和 K8s 登上舞台之后,给原有的 RPC 领域带来了很大的挑战。这个文章主要讲述 RPC 领域遇到的问题,以及 RPC 怎么去拥抱 K8s 怀抱的一些思考。
heidsoft
2019/10/31
1.6K0
Dubbo 在 K8s 下的思考

相似问题

如何从istio-特使容器中抓取数据

121

Istio特使代理问题

23

OPA Istio特使插件

10

Istio特使代理sidecar与容器文件系统有关吗?

111

杀死/阻止Istio特使代理

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文