Obter conteúdo de texto a partir da página MediaWiki via API
-
06-07-2019 - |
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?
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
Essa é a maneira mais simples: http://en.wikipedia.org /w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
Use action = render para obter o mais limpo possível página:
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I ? action = tornar
vs
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I
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