英文维基百科Python查询API

本文介绍了如何使用Python调用英文维基百科的API进行检索和页面信息获取。作者分享了一个简单的脚本,适用于不频繁的小规模查询,同时提醒对于大规模、高频率的需求,应避免使用该方法以防止被限制连接。
摘要由CSDN通过智能技术生成

问题描述

维基百科语料库是做文本挖掘和自然语言处理相关实验的一个非常重要的公开可获取大规模语料库(知识库),有时需要对其进行检索并对获取结果页面的相关信息,如正文文本、标题、页面文本长度等。一种常见的做法是把维基百科语料的dump下载到本机使用,但是这种做法对本机的性能(内存、硬盘)等有一定要求,并且要自己进行众多繁琐的预处理,如果要进行检索,则还需要在本地实现检索功能,显然需要的预处理工作量有点大。如果我们不是使用大规模维基百科语料进行模型训练(如预训练模型),那么可以参考维基百科提供的API接口快速调用相关功能,如,检索、页面文本获取、解析页面的各种信息等。目前有两个常用的Python包可以实现上述功能,Wikipedia-APIwikipedia,博主试用后发现上述两个包的search功能实现的不是特别好,于是根据自己手头的实验需求并参考维基百科的API文档,写了一个相对简单的脚本,实现英文维基百科检索并获取全部结果页面信息获取页面文本获取根据页面ID或页面标题获取页面URL。代码如下,分享给有需要的小伙伴参考使用。

解决办法

import requests
from urllib import parse


class SearchError(Exception):
	# Exception raised when the returned result dict's keys includes `warnings` or `error`
	def __init__(self, exception_type, except_info, url):
		super().__init__(self)
		self.except_info = except_info
		self.url = url
		self.exception_type = exception_type
	
	def __str__(self):
		return "There is {} when call the URL:\n{}\nThe detailed {} information is as follow:\n{}".format(
			self.exception_type, self.url, self.exception_type, self.except_info)


def wiki_search(query):
	# for more API information, refer to 'https://www.mediawiki.org/wiki/API:Search'
	# The search results may be a little different in each time.
	para_dict = {
   
		'action': 'query',
		'list': 'search',
		'srsearch': query,
		'utf8': '',
		'format': 'json',
		'srsort': 'relevance',
		'srprop': 'wordcount',
		'srlimit': 500,
		'sroffset': 0
	}
	# if there are many pages of results, parameter sroffset in the next call should be sroffset + srlimit
	url = 'https://en.wikipedia.org/w/api.php?' + parse.urlencode(para_dict)
	# print(url)
	response = requests.get(url)
	if response.status_code == 200:
		result_dict = eval
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值