Eu preciso apenas recuperar o primeiro parágrafo de uma página da Wikipedia. O conteúdo deve estar formatado em html, pronto para ser exibido nos meus sites (portanto, NÃO BBCODE ou CÓDIGO especial WIKIPEDIA!)
api
wikipedia
wikipedia-api
brilhar
fonte
fonte
Respostas:
Existe uma maneira de obter a "seção de introdução" inteira sem nenhuma análise de html! Semelhante à resposta de AnthonyS com um
explaintext
parâmetro adicional , você pode obter o texto da seção de introdução em texto simples.Inquerir
Obtendo a introdução do Stack Overflow em texto simples:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
Resposta JSON
(avisos retirados)
Documentação: API: query / prop = extractos
Editar: adicionado
&redirects=1
conforme recomendado nos comentários.fonte
$extract = current((array)$data->query->pages)->extract;
. mas "Aviso: tentar obter propriedade de não-objeto" continua chegando.Na verdade, existe um suporte muito bom chamado extratos que pode ser usado com consultas criadas especificamente para esse fim. As extrações permitem obter extrações de artigos (texto truncado do artigo). Há um parâmetro chamado exintro que pode ser usado para recuperar o texto na seção zeroth (nenhum recurso adicional, como imagens ou caixas de informações). Você também pode recuperar extrações com granularidade mais fina, como por um determinado número de caracteres ( exchars ) ou por um determinado número de frases ( exsentências )
Aqui está um exemplo de consulta http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow e a sandbox da API http://en.wikipedia.org/wiki/ Especial: ApiSandbox # action = query & prop = extratos & formato = json & exintro = & title = Stack% 20Overflow para experimentar mais com essa consulta.
Observe que, se você deseja o primeiro parágrafo especificamente, ainda precisa fazer algumas análises adicionais, conforme sugerido na resposta escolhida. A diferença aqui é que a resposta retornada por essa consulta é mais curta do que algumas das outras consultas da API sugeridas, porque você não possui ativos adicionais, como imagens na resposta da API para análise.
fonte
Desde 2017, a Wikipedia fornece uma API REST com melhor cache. Na documentação, você pode encontrar a seguinte API que se encaixa perfeitamente no seu caso de uso. (como é usado pelo novo recurso Visualizações de página )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
retorna os seguintes dados que podem ser usados para exibir um verão com uma pequena miniatura:Por padrão, segue os redirecionamentos (para que
/api/rest_v1/page/summary/StackOverflow
também funcionem), mas isso pode ser desativado com?redirect=false
Se você precisar acessar a API de outro domínio, poderá definir o cabeçalho CORS com
&origin=
(por exemplo&origin=*
)Atualização 2019: a API parece retornar informações mais úteis sobre a página.
fonte
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Podemos obter a extração agora pelo QID?Este código permite recuperar o conteúdo do primeiro parágrafo da página em texto sem formatação.
Partes desta resposta vêm daqui e, portanto, aqui . Consulte a documentação da API do MediaWiki para obter mais informações.
fonte
Sim existe. Por exemplo, se você deseja obter o conteúdo da primeira seção do artigo Estouro de pilha , use uma consulta como esta:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
As partes significam o seguinte:
format=xml
: Retorne o formatador de resultados como XML. Outras opções (como JSON) estão disponíveis. Isso não afeta o formato do conteúdo da página, apenas o formato dos dados anexos.action=query&prop=revisions
: Obtenha informações sobre as revisões da página. Como não especificamos qual revisão, a mais recente é usada.titles=Stack%20Overflow
: Obtenha informações sobre a páginaStack Overflow
. É possível obter o texto de mais páginas de uma só vez, se você separar os nomes deles|
.rvprop=content
: Retorna o conteúdo (ou texto) da revisão.rvsection=0
: Retorna apenas o conteúdo da seção 0.rvparse
: Retorna o conteúdo analisado como HTML.Lembre-se de que isso retorna a primeira seção inteira, incluindo notas de rodapé ("Para outros usos ..."), infoboxes ou imagens.
Existem várias bibliotecas disponíveis para vários idiomas que facilitam o trabalho com a API; pode ser melhor para você se você tiver usado uma delas.
fonte
&redirects=true
ao final do link garante que você chegue ao artigo de destino, se houver algum.Este é o código que estou usando agora para um site que estou criando que precisa obter os parágrafos / resumo / seção 0 dos artigos da Wikipedia, e tudo é feito no navegador (javascript do lado do cliente) graças à magia de JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Ele usa a API da Wikipedia para obter os parágrafos principais (chamados de seção 0) em HTML, assim: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Em seguida, retira o HTML e outros dados indesejados, fornecendo uma sequência limpa de um resumo do artigo, se você quiser, com um pouco de ajustes, obter uma tag html "p" nos parágrafos principais, mas agora há apenas uma nova linha personagem entre eles.
Código:
fonte
Este URL retornará um resumo no formato xml.
Eu criei uma função para buscar a descrição de uma palavra-chave da wikipedia.
fonte
Você também pode obter conteúdo, como o primeiro parágrafo, via DBPedia, que pega o conteúdo da Wikipedia e cria informações estruturadas a partir dele (RDF) e o disponibiliza por meio de uma API. A API DBPedia é uma SPARQL (baseada em RDF), mas gera JSON e é muito fácil de quebrar.
Como exemplo, aqui está uma biblioteca JS super simples chamada WikipediaJS que pode extrair conteúdo estruturado, incluindo um primeiro parágrafo de resumo: http://okfnlabs.org/wikipediajs/
Você pode ler mais sobre isso nesta postagem do blog: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
O código da biblioteca JS pode ser encontrado aqui: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
fonte
O
abstract.xml.gz
despejo soa como o que você deseja.fonte
Se você está apenas procurando o texto que pode separar, mas não deseja usar a API, dê uma olhada em en.wikipedia.org/w/index.php?title=Elephant&action=raw
fonte
Minha abordagem foi a seguinte (em PHP):
$utf8html
pode precisar de mais limpeza, mas é basicamente isso.fonte
Tentei as soluções @ Michael Rapadas e @ Krinkle, mas no meu caso tive problemas para encontrar alguns artigos, dependendo da capitalização. Como aqui:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Nota: eu truncou a resposta com
exsentences=1
Aparentemente, a "normalização do título" não estava funcionando corretamente:
Eu sei que poderia ter resolvido o problema de maiúsculas facilmente, mas também havia o inconveniente de ter que converter o objeto em uma matriz.
Então, como eu realmente queria o primeiro parágrafo de uma pesquisa bem conhecida e definida (sem risco de obter informações de outros artigos), fiz o seguinte:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Observe que neste caso eu fiz o truncamento com
limit=1
Deste jeito:
Mas temos que continuar sendo cuidadosos com a capitalização de nossa pesquisa.
Mais informações: https://www.mediawiki.org/wiki/API:Opensearch
fonte