首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索维基百科,获得第一个条目的第一段找到所有可用的语言使用C#?

搜索维基百科,获得第一个条目的第一段找到所有可用的语言使用C#?
EN

Stack Overflow用户
提问于 2013-06-11 23:10:01
回答 1查看 901关注 0票数 3

假设我有一种语言的目击名单,并且想用维基百科的一些数据丰富这个列表。

因此,我有以下数据--慕尼黑是一个城市,它有以下几个吸引人的地方:

  • 弗劳恩克什
  • 马里恩帕兹
  • 卡尔斯帕兹

我需要做以下几件事:

  1. 以给定的语言向Wikipedia发送一个查询(本例为德语,因为德国wiki更有可能有相应的文章)。
  2. 一旦找到这篇文章,我想得到它的页面标题和前2-3段。
  3. 我想删除任何Wiki标记,只获取文本。
  4. 最好能在原文("de")和其他一些语言中提供这篇文章的文本和标题。

我尝试了NuGet仓库的Linq到Wiki,但是我无法运行这个场景.下面是我正确地超时的代码:

代码语言:javascript
复制
var enwiki = new Wiki("LinqToWiki.Samples", "en.wikipedia.org", "/w/api.php");
var result = enwiki.Query.allpages()
              .Pages
              .Select (
              page =>
              new
              {
                Title = page.info.title,
                Text = page.revisions()
                        .Where( r => r.section == "0")
                        .Select( r => r.value)

              );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-12 00:32:00

如果您知道相关文章的标题,您可以这样做:

代码语言:javascript
复制
var titles = wiki.CreateTitlesSource(
    "Munich Frauenkirche", "Marienplatz", "Karlsplatz (Stachus)");
var pages =
    titles.Select(
        page => new
        {
            Title = page.info.title,
            Text = page.revisions()
                       .Where(r => r.section == "0" && r.parse)
                       .Select(r => r.value)
                       .FirstOrDefault(),
            LangLinks = page.langlinks().ToEnumerable()
        }).ToEnumerable();

LangLinks将以不同的语言包含文章的标题。

Text将包含第一部分的HTML。如果您认为wikitext会更好,您可以通过删除&& r.parse来实现这一点。

还有一些extracts模块似乎支持获取实际的明文,但该模块目前不受LinqToWiki支持。

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

https://stackoverflow.com/questions/17055310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档