2013-08-25 5 views
3

위키 API를 사용하여 쿼리를 작성하려고합니다. 특정 문서의 모든 내부 링크를 id 형식으로 반환합니다. 일부 기사의 pageId 있습니다. 예를 들어 기사 "Android (Operational System)"ID는 12610483입니다. 내 클라이언트 측에서는 ID로만 작업하고 나중에 모든 정보를 ID로 가져와야합니다. 내 목표는 기사 ID를 제공하는 것에서 모든 내부 링크 (기사의 ID)를 찾는 것입니다. http://en.wikipedia.org/w/api.php?action=parse&format=json&pageid=12610483&prop=links위키 피 디아에서 특정 페이지의 모든 링크 (id)를 pageid로 가져 오는 방법

뿐만 아니라 단지 제목을 링크 ID를 얻기 위해 다른 방법이 있나요 :

불행하게도, 내가 볼 수있는 유일한 방법은 기사의 제목으로 표시 링크를 얻는 것입니다?

답변

4

여기를 찾을 수 없습니다 PHP 간단한 HTML DOM 파서를 사용할 필요가 있다고 생각 페이지 텍스트를 파싱합니다.

링크가 페이지 아이디를 의미하지 않는 존재하지 않는 페이지로 이어질 수 있기 때문에 여전히 페이지 제목 만 제공합니다.

그러나 당신이 발전기로 prop=links를 사용하여 해당 문제를 해결할 수 : 기사가 (당신이 제안 같은) 많은 링크가있는 경우, 페이징을 사용해야합니다

http://en.wikipedia.org/w/api.php?action=query&format=json&pageids=12610483&generator=links&gpllimit=max

합니다 (gplcontinue 요소를 참조).

+0

정말 고마워요! :) 그 일, 고마워! –

+0

@svick. 이 방법은 각 링크를 한 번만 계산합니다. 페이지의 각 링크 수를 추적하는 방법이 있는지 궁금합니다. 예를 들어 주어진 페이지가 *** Android-x86 ***에 링크되어 있음을 알리는 것뿐만 아니라 ** Android-x86 **이 기사에서 k ** 번 사용됩니다. mediawiki API로 가능합니까? 감사. – chepukha

+1

@chepukha 그 정보는'pagelinks' 테이블 (또는 다른 곳에서는 적어도 직접적으로는)에 저장되지 않으므로 API 메소드를 찾을 수 없습니다. 원시 텍스트 또는 HTML 형식으로 페이지 텍스트를 구문 분석해야합니다. – svick

-3

난 당신이 대신,

당신은 어떻게 당신이 원하는 것은 pagelinks 데이터베이스 테이블에서 데이터를 얻을 action=query&prop=links을 사용하는 것입니다 http://simplehtmldom.sourceforge.net/

+1

1. 여기서 HTML 구문 분석기를 사용할 이유는 없습니다. 2. 페이지 아이디를 얻으려면 어떻게해야할까요? – svick