Pergunta

Eu sou muito novo para MediaWiki, e agora eu tenho um pouco de um problema. Eu tenho o título de alguma página Wiki, e quero obter apenas o texto de uma referida página usando api.php , mas tudo o que eu encontrei na API é uma maneira de obter o conteúdo Wiki da página (com marcação wiki). Eu usei esta solicitação HTTP ...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

Mas eu preciso apenas o conteúdo textual, sem a marcação Wiki. Isso é possível com a API MediaWiki?

Foi útil?

Solução

Eu não acho que é possível usar a API para obter apenas o texto.

O que funcionou para mim foi para solicitar a página HTML (usando o URL normal que você usaria em um navegador) e retirar as tags HTML sob o div conteúdo.

EDIT:

Eu tive bons resultados usando HTML Parser para Java. Tem exemplos de como tirar fora HTML marcas sob uma determinada DIV.

Outras dicas

Use action=parse para obter o html:

/api.php?action=parse&page=test

Uma maneira de obter o texto do html seria carregá-lo em um navegador e caminhar os nós, olhando apenas para os nós de texto, usando JavaScript.

A extensão TextExtracts da API faz sobre o que você está pedindo. Use prop=extracts para obter uma resposta limpa. Por exemplo, esta ligação vai lhe dar limpas acima o texto para o artigo Stack Overflow . O que também é bom é que ele ainda inclui marcas de seção, para que possa identificar seções individuais do artigo.

Apenas para incluir um link visível na minha resposta, a ligação olhares acima como:

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

Edit:. Como Amr mencionado, TextExtracts é uma extensão para MediaWiki, por isso não irá necessariamente estar disponível para todos os sites MediaWiki

Adicionando ?action=raw no final de uma página MediaWiki retornar o conteúdo mais recente em um formato de texto bruto. Por exemplo: - https://en.wikipedia.org/wiki/Main_Page?action=raw

Você pode obter os dados wiki em formato de texto a partir da API usando o parâmetro explaintext. Além disso, se você precisar acessar muitos títulos informações, você pode obter todos os títulos dados wiki em uma única chamada. Use o | caractere pipe para separar cada título. Por exemplo, esta chamada API retornará os dados de ambos os e as páginas de "Google" "Yahoo":

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

Parâmetros:

  • explaintext:. Extratos regresso se o texto simples em vez de HTML limitada
  • exlimit=max: Retorno mais de um resultado. O máximo é actualmente de 20.
  • exintro: Retorno apenas o conteúdo antes da primeira seção. Se você deseja que os dados completos, basta remover isto.
  • redirects=:. Questões de redirecionamento Resolver

usuários de Python que vêm a esta pergunta poderia estar interessado no wikipedia módulo ( docs ):

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

Toda a formatação, exceto para seções (==) é listrada de distância.

páginas Wiki sem quaisquer símbolos de formatação não seria realmente faz muito sentido em muitos casos.

Você pode retirar a si mesmo a formatação, se você quiser, mas você vai quebrar alguma coisa no processo.

(A menos que você está criando algo como um motor de busca, caso em que você só vai precisar das partes de texto e pode ignorar a formatação símbolos completamente)

Você pode fazer uma coisa após os conteúdos são trazidos para sua página -. Você pode usar a função PHP strip_tags() para remover as tags HTML

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top