API를 통해 미디어 위키 페이지에서 텍스트 콘텐츠 가져 오기
저는 MediaWiki를 처음 접했고 이제 약간의 문제가 있습니다. 일부 Wiki 페이지의 제목이 있고 api.php를 사용하여 해당 페이지의 텍스트 만 얻고 싶지만 API에서 찾은 모든 것은 페이지의 Wiki 콘텐츠를 얻는 방법입니다 (위키 마크 업 포함). ). 이 HTTP 요청을 사용했습니다 ...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
하지만 위키 마크 업없이 텍스트 콘텐츠 만 필요합니다. 미디어 위키 API로 가능합니까?
API를 사용하여 텍스트를 얻는 것이 가능하지 않다고 생각합니다.
나를 위해 일한 것은 (브라우저에서 사용하는 일반 URL을 사용하여) HTML 페이지를 요청하고 콘텐츠 div 아래의 HTML 태그를 제거하는 것입니다.
편집하다:
Java 용 HTML Parser 를 사용하여 좋은 결과를 얻었습니다 . 주어진 DIV 아래에서 HTML 태그를 제거하는 방법에 대한 예제가 있습니다.
action=parse
html을 얻으려면 사용하십시오 .
/api.php?action=parse&page=test
html에서 텍스트를 가져 오는 한 가지 방법은 브라우저에로드하고 JavaScript를 사용하여 텍스트 노드 만 찾고 노드를 탐색하는 것입니다.
API의 TextExtracts 확장은 사용자가 요청하는 작업을 수행합니다. prop=extracts
정리 된 응답을 얻기 위해 사용 합니다. 예 를 들어이 링크는 Stack Overflow 기사에 대한 정리 된 텍스트를 제공합니다 . 또한 좋은 점은 여전히 섹션 태그가 포함되어 있으므로 기사의 개별 섹션을 식별 할 수 있다는 것입니다.
내 대답에 보이는 링크를 포함하기 위해 위의 링크는 다음과 같습니다.
/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true
편집 : Amr이 언급했듯이 TextExtracts는 MediaWiki 의 확장 이므로 모든 MediaWiki 사이트에서 반드시 사용할 수있는 것은 아닙니다.
?action=raw
미디어 위키 페이지 끝에 추가 하면 최신 콘텐츠가 원시 텍스트 형식으로 반환됩니다. 예 :-https://en.wikipedia.org/wiki/Main_Page?action= raw
explaintext
매개 변수 를 사용하여 API에서 텍스트 형식의 위키 데이터를 가져올 수 있습니다 . 또한 여러 타이틀의 정보에 액세스해야하는 경우 한 번의 호출로 모든 타이틀의 위키 데이터를 가져올 수 있습니다. 파이프 문자 |
를 사용하여 각 제목을 구분 하십시오 . 예를 들어이 API 호출은 "Google"및 "Yahoo"페이지 모두에서 데이터를 반환합니다.
http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=
매개 변수 :
explaintext
: 제한된 HTML 대신 일반 텍스트로 추출을 반환합니다.exlimit=max
: 둘 이상의 결과를 반환합니다. 현재 최대 값은 20입니다.exintro
: 첫 번째 섹션 이전의 콘텐츠 만 반환합니다. 전체 데이터를 원하면 이것을 제거하십시오.redirects=
: 리디렉션 문제를 해결합니다.
이것이 가장 간단한 방법입니다. http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
이 질문에 오는 Python 사용자는 wikipedia
모듈 ( docs )에 관심이있을 수 있습니다 .
import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)
섹션 ( ==
)을 제외한 모든 서식 이 스트라이프됩니다.
가장 깨끗한 페이지를 얻으려면 action = render를 사용하십시오.
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I?action=render
vs
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I
서식 기호가없는 위키 페이지는 많은 경우에 그다지 의미가 없습니다.
원하는 경우 서식을 직접 제거 할 수 있지만 그 과정에서 일부 항목이 손상됩니다.
(검색 엔진과 같은 것을 생성하지 않는 한,이 경우 텍스트 부분 만 필요하고 서식 기호를 완전히 무시할 수 있습니다)
콘텐츠를 페이지로 가져온 후 한 가지를 수행 할 수 있습니다. PHP 기능 strip_tags()
을 사용 하여 HTML 태그를 제거 할 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/1625162/get-text-content-from-mediawiki-page-via-api
'Development Tip' 카테고리의 다른 글
Python 'self'키워드 (0) | 2020.12.13 |
---|---|
필드의 조건부 개수 (0) | 2020.12.13 |
PostgreSQL에서 공간 계산 및 절약 (0) | 2020.12.13 |
Android : 현재 위치에서 EditText에 텍스트 삽입 (0) | 2020.12.13 |
Windows에서 C 용 Eclipse를 찾을 수없는 시작 실패 바이너리 (0) | 2020.12.13 |