위키백과:참조 데스크/아카이브/컴퓨팅/얼리/파스미디어위키덤프
Wikipedia:![]() | 이 페이지는 현재 비활성 상태이며 기록 참조용으로 보존되어 있다. 그 페이지는 더 이상 관련성이 없거나 그 목적에 대한 합의가 불분명해졌다.토론을 되살리려면 마을 펌프와 같은 포럼을 통해 보다 폭넓은 의견을 구하십시오. |
파스:MediaWikiDump는 Triddle이 만든 Perl 모듈로, MediaWiki 덤프 파일에 있는 정보에 쉽게 액세스할 수 있도록 한다.후속 제품인 미디어위키::DumpFile은 동일한 작성자에 의해 작성되며 CPAN에서도 사용할 수 있다.
다운로드
최신 버전의 파스:MediaWikiDump 및 MediaWiki::DumpFile은 https://metacpan.org/pod/Parse::MediaWikiDump 및 https://metacpan.org/pod/MediaWiki:::DumpFile에서 사용 가능
예
기본 이름 공간에서 범주화되지 않은 문서 찾기
#!/usr/bin/perl -w 사용하다 엄한; 사용하다 파스:MediaWikiDump; 나의 $file = 교대시키다(@ARGV) 또는 죽다 "Mediawiki 덤프 파일을 지정해야 함"; 나의 $pags = 구문 분석:MediaWikiDump::페이지->새로운($file); 나의 $page; 하는 동안에(규정된($page = $pags->다음에)) { #주 네임스페이스만 해당 다음에 ~하지 않는 한 $page->네임스페이스 eq ''; 인쇄하다 $page->칭호를 붙이다, "\n" ~하지 않는 한 규정된($page->분류); }
기본 이름 공간에서 이중 리디렉션 찾기
이 프로그램은 기사 제목과 일치하는 적절한 사례 민감도 규칙을 따르지 않는다. 이 프로그램의 보다 완전한 버전은 모듈과 함께 제공되는 설명서를 참조하십시오.
#!/usr/bin/perl -w 사용하다 엄한; 사용하다 파스:MediaWikiDump; 나의 $file = 교대시키다 또는 죽다 "Mediawiki 덤프 파일을 지정해야 함"; 나의 $pags = 구문 분석:MediaWikiDump::페이지->새로운($file); 나의 %redirs; 하는 동안에(규정된(나의 $page = $pags->페이지를 매기다)) { 다음에 ~하지 않는 한 $page->네임스페이스 eq ''; 다음에 ~하지 않는 한 규정된($page->방향을 바꾸다); 나의 달러화 = $page->칭호를 붙이다; $redirs{달러화} = $page->방향을 바꾸다; } 하는 동안에 (나의 ($key, 달러화) = 각각(%redirs)) { 만일 (규정된($redirs{달러화})) { 인쇄하다 "$key\n"; } }
특정 페이지 카테고리만 가져오기
#!/usr/bin/perl 사용하다 파스:MediaWikiDump; 사용하다 DBI; 사용하다 DBD::mysql; $서버 = "localhost"; 달러명 = "dbname"; $user = "관리자"; $password = "통과"; 달러화 = "DBI:mysql:database=$name;host=$server;"; $dbh = DBI->연결하다(달러화, $user, $password); 달러 출처 = 'pages_reason.xml'; $pags = 구문 분석:MediaWikiDump::페이지->새로운(달러 출처); 인쇄하다 "파싱 다 했어.\n"; 하는 동안에(규정된($page = $pags->페이지를 매기다)) { $c = $page->분류; 만일 (기름칠하다 {/수학/} @$c) { # 텍스트에 "수학" 문자열이 있는 모든 범주 # 정확한 일치를 위해 {$_ eq "수학"을 사용하십시오. $id = $page->id; 달러화 = $page->칭호를 붙이다; $text 텍스트 = $page->문자 메시지를 보내다; #$dbh->do("삽입..."); #SQL의 상세 정보는 데이터베이스 설정에 따라 달라진다. 인쇄하다 '$title' ID $id가 삽입되었다.\n"; } }
특정 위키에 연결되지 않고 중요한 위키에 연결된 기사 추출
이 스크립트는 :de, :es, :it, :ja, :nl but :fr에 인터위키스가 포함되어 있는지 여부를 확인한다."대중" 기사를 특정 위키와 연결시키는 것이 유용하다.그것은 또한 우선 번역되어야 하는 기사에 대해 유용한 힌트를 줄 수 있다.
#!/usr/bin/perl -w # 코드 : 다케 사용하다 엄한; 사용하다 파스:MediaWikiDump; 사용하다 utf8; 나의 $file = 교대시키다(@ARGV) 또는 죽다 "Mediawiki 덤프 파일을 지정해야 함"; 나의 $pags = 구문 분석:MediaWikiDump::페이지->새로운($file); 나의 $page; 빈모드 스탠드아웃, ":utf8"; 하는 동안에(규정된($page = $pags->다음에)) { #주 네임스페이스만 해당 다음에 ~하지 않는 한 $page->네임스페이스 eq ''; 나의 $text 텍스트 = $page->문자 메시지를 보내다; 만일 (($텍스트 =~/\[de:/i]) && ($텍스트 =~/\[\][es:/i]) && ($텍스트 =~/\[\][nl:/i]) && ($텍스트 =~/\[\][ja:/i]) && ($텍스트 =~/\[\][it:/i]) && !($텍스트 =~/\[\][fr:/i])) { 인쇄하다 $page->칭호를 붙이다, "\n"; } }
관련 소프트웨어
- 위키백과 전처(wikiprep.pl)는 원시 XML 덤프를 사전 처리하고 링크 테이블, 카테고리 계층을 구축하며 각 기사에 대한 앵커 텍스트를 수집하는 Perl 스크립트다.
- 위키백과:위키프로젝트 히브리 위키백과의 인터언어 링크/아이디어 - 히브리 위키백과에서 관련 인터위키(인터언어) 링크를 가능한 한 많은 기사에 추가하는 프로젝트.Parse를 사용한다.링크 없이 페이지를 검색하기 위한 MediaWikiDump.그것은 현재 다른 위키피디아로 수출되고 있다.