Pergunta

Eu estou querendo saber se existem bibliotecas existentes ou acessível a partir de Objective-C que me permitem páginas raspar formatados como esta . Especificamente, todas as datas e todo o texto ao lado de cada data. Se não, qual seria a melhor maneira de ir sobre como fazer isso? Expressões regulares? Ouvi dizer que NSString já poderia ter built-in métodos para isso. Isso é verdade?

Eu estava olhando em volta para ver se havia alguma alternativa para raspagem, como um arquivo XML ou API. Eu fiz encontrar uma API, mas os únicos clientes que vejo estão disponíveis em outros idiomas e eles parecem apenas ser capaz de postar conteúdo para páginas, não recuperá-lo.

Editar : Então, eu encontrei mais informações sobre a API nesses links:

E eu era capaz de chegar a esta solicitação que retorna algum texto HTML codificado (Bem, o formato é XML, mas inclui o texto da página, como »a href= etc. vou continuar procurando através dos docs para ver se eu posso fazer isso sair um pouco melhor, se não, porém, existem recomendações sobre a análise isso?

EDIT 2 : Tudo bem que graças a este doc página , a maneira mais simples e mais limpo que eu fui capaz de recuperar os dados está usando este construído ligação que retorna os dados brutos ( Em wiki markup ) da secção relevante. No entanto, eu acho que eu seria, então precisa analisar que, embora se isso é realmente o caso, deve ser muito mais fácil do que todo o artigo.

Alguém tem alguma recomendação em análise wiki marcação, como o seguinte em Objective-C?

==Events==
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.

O que eu quero acabar tendo é que eu acho que um NSDictionary ou coleção semelhante que irá armazenar a data com o trecho que acompanha de informações. Obrigado!

Foi útil?

Solução

Eu estou indo para ir com sugerindo regex para extração de dados alvo de um fluxo de dados HTML mista.

Já existem bibliotecas RegEx no telefone, eles são uma espécie de escondido embora - você pode expô-los com algumas simples chamadas usando RegexKitLite (certifique-se de rolar para baixo e obter a versão light). Ela acaba sendo uma classe com algumas extensões em NSString que permite que você regexs, então você deve definir um regex com duas partidas capturados - um para o número, e um para o conteúdo, juntamente com uma série de jogos não-capturadas para o delimitador e marcas intermédias. Mesmo que seja uma versão "lite" de regex padrão que Sill suportes praticamente qualquer capacidade que você precisa.

A abordagem API é promissor, mas uma vez que você começa a marcação matéria você provavelmente vai ter que tomar uma abordagem regex semelhante à análise de dados fora dessa. Ele ainda pode fazer sentido se reduz a complexidade e transferência de dados em tempo regex no entanto, nenhuma razão você não pode combinar ambas as abordagens.

Outras dicas

Adicionar um &format=fmt até o fim da sua consulta, como descrito em API: Data_formats . Sua consulta é: JSON consulta , por exemplo. Você pode especificar XML, JSON, ou muitos outros formatos.

Você pode facilmente analisar as seções gerais, e depois é só exibir a saída HTML formatado em um webview.

Uma vez que as páginas na Wikipedia são armazenados como texto simples, e entrada por usuários como texto simples, você não está indo para obter um conjunto de dados estruturados a partir dele.

Eu raspou um monte de dados de WP de várias maneiras. o formato depende de uma série de coisas, incluindo o tipo de subdomínio a informação está em e quando foi introduzido. O texto principal é o formato livre e não há nenhuma maneira simples de raspá-lo. Os infoboxes estão em um formato WP especial que mudou ao longo dos anos. Ele não foi projetado para ser raspado.

Há um WP apoio de banco de dados que é um pouco mais estruturado.

De longe, a melhor estratégia é entrar em contato com os wikipedistas no domínio que você deseja raspar - eles vão saber sobre o formato de banco de dados e pode muito bem ser capaz de ajudar - eles certamente vão deseja para ajuda como eles vão querer ver WP em forma semântica (como DBPedia - http://dbpedia.org/About ) .

count

O Python? ;) É acessível a partir de Objective-C . E há grandes módulos para fins de raspagem: Sabão e / ou mecanizar bonito, você também pode considerar lxml

.

que é mais definitivamente não é a maneira de fazê-lo, em qualquer idioma.

Se qualquer site on-line irá expor seus dados de uma maneira agradável, vai ser wikipedia.

olhar para obter um artigo como XML, como RDF, ou talvez até mesmo como JSON.

Eu tenho um aplicativo para iPhone que faz uma raspagem de tela usando o seguinte:

Usando YQL você pode obter todas as informações que você precisa a partir da web usando consultas XPATH contra o DOM.

Pessoalmente eu acho que é muito melhor do que usar Regex. Então, novamente eu só sei expressões regulares muito simples.

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