2017-01-24 6 views
2

나는 러시아어로 일부 영화에 대한 데이터를 수집하고 있는데, 위키 백과의 API를 사용하여, 나는 JSON 형식으로 필요한 필름에 대한 데이터를 조회 할 수 있습니다 %s이 기사의 제목입니다러시아 위키 백과에서 일부 영화 기사에 대한 IMDb ID를 얻는 방법?

https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&titles=%s 

.

필수 속성 중 하나 - IMDb ID. 여기서 문제는 이 모두 기사가 wiki 마크 업 (실제로는 필름 템플릿에서)에 포함되어 있지는 않지만 항상 렌더링 된 페이지라는 점입니다.

Russian version의 필름 템플릿은 IMDb ID가 자동으로 Wikidata에서 가져옵니다 (영어 버전에서는이 infobox의 데이터베이스를 전혀 거절한다고 말합니다. 하단의 링크 섹션 참조).

Wikipedia API 또는 Wikidata API를 사용하여 IMDb ID를 요청하는 방법이 있습니까?

+0

OMDb API를 사용해 보셨습니까? 그것은 당신에게 IMDb ID를 가져옵니다. 예를 들면 다음과 같습니다. http://www.omdbapi.com/?t=Under+Electric+Clouds&y=&plot=full&r=json – Vikash

+0

@Vikash 예, 현재 OMDb API를 사용합니다. 기사에는 없습니까? – cybersoft

답변

2

할 수 있습니다 얻을 Wikidata Query Service에 의해 ruwiki하는 IMDB의 ID 및 링크가있는 모든 위키 데이터 필름 항목 :

SELECT ?item ?IMDb_ID ?sitelink WHERE { 
    ?item wdt:P31 wd:Q11424 . 
    ?item wdt:P345 ?IMDb_ID . 
    ?sitelink schema:about ?item ; schema:isPartOf <https://ru.wikipedia.org/> . 
} 

각 항목이있다

https://query.wikidata.org/bigdata/namespace/wdq/sparql?format=json&query=SELECT+?item+?IMDb_ID+?sitelink+WHERE+{?item+wdt:P31+wd:Q11424+.?item+wdt:P345+?IMDb_ID+.?sitelink+schema:about+?item+;+schema:isPartOf+%3Chttps://ru.wikipedia.org/%3E+.} 

:

결과는 모든 위키 데이터 항목, 자신의 IMDB ID와 그들과 연결 ruwiki 문서 이름이 포함됩니다에 사이트 링크되는3210

  • IMDb ID (P345) 속성입니다.

    { 
        "item" : { 
        "value" : "http://www.wikidata.org/entity/Q203063" 
        }, 
        "IMDb_ID" : { 
        "value" : "tt0457308" 
        }, 
        "sitelink" : { 
        "value" : "https://ru.wikipedia.org/wiki/Приходи_пораньше" 
        } 
    }, 
    ... 
    

    그리고 here 경우에만 러시아 페이지 Приходи пораньшеIMDB의 ID을 얻을 수있는 방법 예입니다.

  • +0

    너무 느린 ... 찾으려면 약 5-8 초가 걸렸습니다. 그러나 그것은 작동합니다, 고마워요! – cybersoft

    +0

    @ cybersoft. 나는 당신이 어떤 언어를 사용하는지 모른다. 그러나 항상 모든 IMDb ID를 얻고 특정 제목으로 검색하기 위해이 변형을 시도 했는가? 같은 제목으로이 ID를 직접 가져 오는 '느린'쿼리를 사용해야하는 경우 속도 차이가 무엇인지 궁금합니다. – Termininja

    +1

    그녀는 결과입니다 : 메모리 ~ 5 초, URL로 검색 ~ 0.7 밀리 초. 나는 자바 1.8을 사용하고 있는데, 검색은 병렬 스트림 API를 사용하여 수행된다. (디버그는 나의 경우 3 개의 스레드를 보여준다.) 그것은 모든 빠른 다음 서버에 쿼리를 보내고 응답을 기다려 ... 서버가 느린 수 있습니다 또는 네트워크 지연 – cybersoft