質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

11125閲覧

URL クエリについて 複数同じものの場合

whxtna

総合スコア57

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2016/04/22 02:45

###前提・実現したいこと
wikipediaAPIにて人物の情報を取得したい。

https://ja.wikipedia.org/w/api.php?format=php&action=query&prop=revisions&titles="人物名"&rvprop=content&rvsection=0&rvsection=1&rvsection=2

rvsectionとはwiki内の略歴やエピソードなどの情報で、0はプロフィール1は略歴などを指します。
複数のrvsectionを取得したい。

###発生している問題・エラーメッセージ

上記URLですと最後のrvsection=2の情報しかとれていません。。

こういった場合、同じkeyで違う値を複数指定したい場合どういった方法で、
取得できますでしょうか??

ご回答お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2016/04/23 12:23

wikipediaの管理者にリクエストを出して、rvsection=を複数指定した場合に対応してくれるように頼む。それしかないです。wikipediaのシステムを外部から改変することは出来ないですから。いろいろやってみて出来ないのはwikipediaのシステムがそのように作られているからです。ドキュメントにどうかかれていようが、実際にやってみて出来ないという現実は素直に受け入れるべきだと思います。
guest

回答3

0

リファレンスを読む限り、何とも判断のしようがありませんね。
https://www.mediawiki.org/wiki/API:Revisions

rvsection: If rvprop=content is set, only retrieve the contents of this section. This is an integer, not a string title. 1.13+

ちなみにrvpropなどはパイプ(|)区切りで複数、指定できると記載がありましたが、rvsectionでは不可能でした。

以下、私が試してみた形式です。(全て"0"しか取れませんでした)

https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&rvsection=0|1&format=json

https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&rvsection=0,1&format=json

https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&rvsection=0%261&format=json

個人的な意見を言わせていただくと、このまま調査を続けるよりも、全てのセクションを取得した後で、クライアント側で望むセクションだけを抽出するように改修した方が時間の節約になるかも知れませんw

投稿2016/04/22 04:03

編集2016/04/22 04:13
KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

PHPならパラメタから配列を取得できるようですが、、、。
1つずつ検索して結果を並べる、くらいしかないかもしれませんね。

ご参考にPHPの例です。
urlのパラメータに配列を使用する
PHPの$_POSTや$_GETで配列を使うには

投稿2016/04/22 04:11

kaputaros

総合スコア1844

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2016/04/22 04:24

あ、ホントですねw お試しありがとうございます!
退会済みユーザー

退会済みユーザー

2016/04/22 10:00

利用できなかったみたいだけど、面白いですね。
kaputaros

2016/04/25 07:07

Σ('Д')!! お試ししてもらって出来なかったのに、ベストアンサーとは!? 配列でいけたのですか??
guest

0

URLはネット上のリソースを特定するものです。

wikipediaが複数のページをとりまとめたリソースを提供していないのであれば、それを1つのURLで特定する事はできません。

rvsectionが0,1および2の情報を得たいのであれば、3つのURLを用いて、それぞれ取得するしかありません。

投稿2016/04/22 03:14

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/04/22 03:37

私も興味があったので調べているのですが、rvsection を複数個指定できないという根拠が見つかりませんでした。 ソース読まないと分からなさそうだったので、めんどくさくて中断したのですが、なにか根拠があっての回答でしょうか?
coco_bauer

2016/04/22 09:33

vrsectionが複数指定されたURLの場合に、それに対応したコンテンツを取りまとめたデータを作って返すWebページを作ることは技術的には可能です。しかしWikipediaAPIは、そのような作りになっていません。「rvpropが指定(整数を1つ)された場合、それに対応する内容のみを検索する」(If rvprop=content is set, only retrieve the contents of this section. This is an integer)という事ですから、複数の指定は想定していない(複数のrvprepを扱うような機能は持っていない)という事だと思います。
退会済みユーザー

退会済みユーザー

2016/04/22 09:58

If rvprop=content is set, only retrieve the contents of this section. This is an integer が「そのような作りになっていない」の根拠と理解しましたが、認識は正しいでしょうか? 英語が得意ではないので微妙な理解ですが、上記の表現だけだと、「vprep」と「vrsection」は別物なので、複数設定できないと断言するには情報が足りないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問