Python 如何获取wikipedia项目的数据?

Python 如何获取wikipedia项目的数据?,python,mediawiki,wikipedia,wikipedia-api,mediawiki-api,Python,Mediawiki,Wikipedia,Wikipedia Api,Mediawiki Api,我最近发现维基百科有一些维基项目是根据学科分类的。如链接所示,它有34个学科 我想知道是否有可能获得所有与这些维基百科学科相关的维基百科文章 例如,考虑维基工程计算机科学‎. 是否可以使用WikiProject computer science获取所有与计算机科学相关的wikipedia文章‎ 类别如果是,是否有与之相关的数据转储,或者是否有其他方式获取这些数据 我目前正在使用python,即pywikibot和pymediawiki。不过,我也很高兴收到其他语言的答案 如果需要,我很乐意提供更

我最近发现维基百科有一些维基项目是根据学科分类的。如链接所示,它有34个学科

我想知道是否有可能获得所有与这些维基百科学科相关的维基百科文章

例如,考虑维基工程计算机科学‎. 是否可以使用WikiProject computer science获取所有与计算机科学相关的wikipedia文章‎ 类别如果是,是否有与之相关的数据转储,或者是否有其他方式获取这些数据

我目前正在使用python,即pywikibot和pymediawiki。不过,我也很高兴收到其他语言的答案

如果需要,我很乐意提供更多详细信息。

您可以使用获取子类别和页面列表。将cmtype参数设置为subcat以获取子类别,将cmnamespace设置为0以获取项目

您还可以从中的数据库类别层次结构信息和中的文章信息中获取列表,您可以使用中的文章信息获取子类别和页面的列表。将cmtype参数设置为subcat以获取子类别,将cmnamespace设置为0以获取项目


此外,您还可以从中的数据库类别层次结构信息和中的文章信息中获取列表,正如我建议的那样,在@arash的答案中添加,您可以使用Wikipedia API获取Wikipedia数据。下面是一个链接,介绍了如何执行此操作

正如您所评论的,您需要使用程序获取数据,下面是JavaScript中的示例代码。它将从类别:WikiProject\u Computer\u science\u文章中获取前500个名字,并显示为输出。您可以根据以下示例转换所选语言:

//导入模块 const fetch=require'node-fetch'; //包含要获取的资源的URL 常量url=https://en.wikipedia.org/w/api.php?action=query&format=json&list=categorymembers&cmtitle=Category%3AWikiProject_Computer_science_articles&cmprop.ids=1&cmlimit=500; //使用“节点获取”获取 fetchurl.thenres=>res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //迭代所有响应数据 forlet i=0;i res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //初始化空数组 让标题=[]; //迭代所有响应数据 forlet i=0;i res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //初始化空数组 让标题=; //迭代所有响应数据
forlet i=0;i如我所建议并添加到@arash的答案中,您可以使用Wikipedia API获取Wikipedia数据。以下是有关如何实现此目的的说明链接

正如您所评论的,您需要使用程序获取数据,下面是JavaScript中的示例代码。它将从类别:WikiProject\u Computer\u science\u articles中获取前500个名称,并显示为输出。您可以根据此示例转换您选择的语言:

//导入模块 const fetch=require'node-fetch'; //包含要获取的资源的URL 常量url=https://en.wikipedia.org/w/api.php?action=query&format=json&list=categorymembers&cmtitle=Category%3AWikiProject_Computer_science_articles&cmprop.ids=1&cmlimit=500; //使用“节点获取”获取 fetchurl.thenres=>res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //迭代所有响应数据 forlet i=0;i res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //初始化空数组 让标题=[]; //迭代所有响应数据 forlet i=0;i res.json.thent=>{ //获取返回数组的长度 设len=t.query.categorymembers.length; //初始化空数组 让标题=; //迭代所有响应数据
如果i=0;i可能您可以使用Wikipedia API从Wikipedia获取您想要的资源,请查看@Alice谢谢您的评论。我不知道如何使用mediawiki API来完成此任务。您有什么建议吗?:您希望内容如何?html格式可以吗?如果可以,我可以使用Selenium编写代码或者一些API库来获取那篇文章,但是文档样式不合适?@Alice非常感谢你的评论。考虑到wikiproject的链接,例如,在计算机科学中,我只想在上面的链接中获取它的页面名称,它们总共有7186页。例如,`Talk:.dbf,Talk:.onion,Talk:1+ε-nearest邻居搜索,Talk:/bin,Talk:/bin/bash,…`等。请告诉我您的想法。如果需要,我很乐意提供更多详细信息。再次感谢您:我已添加

代码,但在JavaScript中。您可以将其用作参考,也可以使用您选择的程序获取数据。如果你对此有任何疑问,请告诉我。。。谢谢…也许你可以使用WikipediaAPI从Wikipedia获取你想要的资源,请查看@AliCSE谢谢你的评论。我不知道如何使用mediawiki API来完成这项任务。你有什么建议吗您希望内容如何?html格式可以吗?如果是,我可以使用Selenium或一些API库来获取该文章,但文档样式不合适?@Alice非常感谢您的评论。考虑到维基项目的链接,例如,在计算机科学中,我只想得到上面链接中的页面名称,它们总共有7186页。i、 例如,`Talk:.dbf,Talk:.洋葱,Talk:1+ε-近似最近邻搜索,Talk:/bin,Talk:/bin/bash,…`等等。请告诉我您的想法。如果需要,我很乐意提供更多细节。再次感谢您:我已经添加了代码,但是是在JavaScript中添加的。您可以将其用作参考,也可以使用您选择的程序获取数据。如果你对此有任何疑问,请告诉我。。。谢谢你…非常感谢你的回答。如果您能告诉我如何使用代码来实现这一点,那将是非常棒的,因为我仍在试图弄清楚如何使用API和数据库。期待您的来信。再次感谢你们:这个标题应该是WikiProject计算机科学吗‎? :我想你应该在Meta中检查PetScan工具。petscan可以在分类树中列出页面,带有特定模板,或者特定页面的链接:您可以在这里找到源代码:非常感谢您的回答。如果您能告诉我如何使用代码来实现这一点,那将是非常棒的,因为我仍在试图弄清楚如何使用API和数据库。期待您的来信。再次感谢你们:这个标题应该是WikiProject计算机科学吗‎? :我想你应该在Meta中检查PetScan工具。petscan可以在类别树中列出页面,带有特定模板,或者特定页面的链接:您可以在这里找到源代码:非常感谢。我将运行此代码并让您知道它是如何执行的:请让我知道。如果上述方法不起作用,那么我将尝试用您的python语言实现解决方案…当然,这里有一些信息-下载node js和npm,安装node fetch并尝试运行上述代码。欢迎。。。是的,我们可以使用NodeJS fs模块将数据写入文件。我已经更新了代码,如果你需要什么,请检查并告诉我。。。你可以评论打印部分,如果你想…检查更新的代码,让我知道这是你想要还是不想要?谢谢你…非常感谢。我将运行此代码并让您知道它是如何执行的:请让我知道。如果上述方法不起作用,那么我将尝试用您的python语言实现解决方案…当然,这里有一些信息-下载node js和npm,安装node fetch并尝试运行上述代码。欢迎。。。是的,我们可以使用NodeJS fs模块将数据写入文件。我已经更新了代码,如果你需要什么,请检查并告诉我。。。你可以评论打印部分,如果你想…检查更新的代码,让我知道这是你想要还是不想要?非常感谢。