2016-09-15 2 views
0

How to export text from all pages of a MediaWiki?과 관련이 있지만 출력물을 페이지 제목을 사용하여 이름이 지정된 개별 텍스트 파일로 지정합니다.mediawiki에서 모든 페이지를 개별 페이지 파일로 내보내는 방법은 무엇입니까?

SELECT page_title, page_touched, old_text 
FROM revision,page,text 
WHERE revision.rev_id=page.page_latest 
AND text.old_id=revision.rev_text_id; 

은 stdout과 모든 페이지를 한 번에 덤프합니다.

개별 파일로 분할하고 덤프하는 방법은 무엇입니까?

해결

하나 개의 파일로

먼저 덤프 : 당신은 어떤 파이썬 지식을 가질 경우

with open('wikipages.csv', 'rb') as f: 
    alltxt = f.read().split('\[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n') 

    for row in alltxt: 
    one = row.split('\n') 
    name = one[0].replace('/','-') 
    try: 
     del one[0] 
     del one[0] 
    except: 
     continue 
    txt = '\n'.join(one) 
    of = open('/tmp/wikipages/' + name + '.txt', 'w') 
    of.write(txt) 
    of.close() 

답변

1

:

SELECT page_title, page_touched, old_text 
FROM revision,page,text 
WHERE revision.rev_id=page.page_latest AND text.old_id=revision.rev_text_id AND page_namespace!='6' AND page_namespace!='8' AND page_namespace!='12' 
INTO OUTFILE '/tmp/wikipages.csv' 
FIELDS TERMINATED BY '\n' 
ESCAPED BY '' 
LINES TERMINATED BY '\[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n'; 

그런 다음 개별 파일 사용 파이썬으로 분할 이를 달성하기 위해 mwclient 라이브러리를 활용할 수 있습니다 :

,
  1. import mwclient 
    wiki = mwclient.Site(('http', 'you-wiki-domain.com'), '/') 
    for page in wiki.Pages: 
        file = open(page.page_title, 'w') 
        file.write(page.text()) 
        file.close() 
    

는 참조 용으로 mwclient 페이지 https://github.com/mwclient/mwclient를 참조

아래 pip install mwclient
  • 실행 파이썬 스크립트를 통해 mwclient를 설치 (문제의 경우 https://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-ubuntu 참조) 파이썬 2.7 sudo apt-get install python2.7를 설치

  • +0

    히스토리가없는 dumpgenerator.py도 있습니다. – Nemo

    관련 문제