2013-11-23 3 views
9

나는 위키 미디어 API에서 임의의 기사를 당기려고하지만, 내 코드는 사용자 토론 페이지를 잡아 것으로 보인다는 ...임의의 기사 API 호출이 사용자 대화 페이지를 반환하고 있습니까?

$(document).ready(function(){ 
    $.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&prop=extracts&exchars=500&format=json&callback=?", function (data) { 
    console.log(data.query.pages); 
    }); 
}); 

나는 "발전기가 임의 ="임의의 기사를 가져옵니다,하지만 읽어 보시기 바랍니다 그럴 것 같지 않습니다. 의도 한대로 작동하게하려면 어떻게해야합니까?

답변

14

네임 스페이스 0의 페이지 만 가져 오려면 rnnamespace 매개 변수를 지정해야합니다. 당신이 발전기로 list=random을 사용하고 있기 때문에, 그것은 grnnamespace로 철자 :

+0

@Ilmari 편집 해 주셔서 감사합니다. – svick

+1

그건 독창적인데 ... MediaWiki API 레퍼런스에서 찾지 못했습니다. 나는 그것이 불가능하고 당신의 대답을 연결했다는 나의 의견을 삭제했습니다. – mc10

+0

굉장! API는 네임 스페이스에 대한 경고를 반환했지만 이것이 문제라고 생각하지 않았습니다. 미래의 독자를 위해 대신이 대답을 수락하십시오. – theintellects

1

API를 사용하면 임의 페이지를 직접 가져올 수 없습니다. 난수 생성기는 현재 임의의 페이지를 네임 스페이스에서 가져옵니다.편집 : 나는 고쳐진다; 분명히 grnamespace 매개 변수를 svick mentions in their answer으로 전달하면됩니다. 그래도 내 원래의 대답을 떠날거야.

두 번의 API 호출은 어떻습니까?

첫째, 임의의 페이지 목록을 잡기 위해 전화를 걸 :

https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=5&format=json 

당신이 원하는 얼마나 많은 페이지를 기반으로 rnlimit 매개 변수를 조정합니다. 다음과 같은 (교체 TITLE를 사용

https://en.wikipedia.org/w/api.php?action=query&titles=TITLE1|TITLE2&prop=revisions&rvprop=content&format=json 

를 페이지의 HTML의 사본 :

이 (가) 다음 (실제 타이틀 TITLE1, TITLE2 등 교체)를 사용, 위키 소스를 얻으려면 실제 제목, 반복적으로 API를 호출) : 물론

https://en.wikipedia.org/w/api.php?action=parse&page=TITLE&prop=text&format=json 

, 그냥 직접 Special:Random를 호출하는 것이 더 쉬울 수 있습니다 및 스크린 스크랩 :

https://en.wikipedia.org/wiki/Special:Random 
+0

감사합니다, 나는 시도 것을주지! – theintellects

+3

"API로 임의 페이지를 직접 가져올 수 없습니다."내 대답을 참조하십시오. – svick