• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

qwerty

Buscar XML de site

21 mensagens neste tópico

Estou a começar a trabalhar com XML e agora gostaria de começar a trabalhar através de informação dada por sites. A minha questão é como é que eu posso "aceder" a informação que um site me pode dar e se é possivel saber qual me dá. Vou dar um exemplo, suponhamos que eu quero receber do site tvcabo.com a informação de programação de cada canal televisivo. COmo posso fazer esse pedido e depois trabalhar como XML (a parte de trabalhar com o XML penso que já tenho conhecimento). Neste momento a minha dúvida prende-se em como ter acesso via http request ou outra qualquer. Isto para linguagens como java, c#, python, whatever (não em php). A nivel de ligações por sockets sei como fazer. Já agora, existem exemplos deste genero?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não precisas de usar sockets manualmente. Basta-te usar um sistema de acesso via url.

Não tem muito que se lhe diga, sacas o xml e parsa-lo com um parser.

Não consigo explicar bem porque é simpels demais.

Sabes sacar uma página web programáticamente?

Se souberes é simplesmente isso que tens que fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para trabalhares o XML aconselho a utilização do XPath.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para trabalhares o XML aconselho a utilização do XPath.

Enquanto o querty não volta ao tópico...

Rui carlos, não queres fazer um pequeno tutorial ilustrado com exemplos do uso de Xpath?

Já li o tutorial na w3schools mas não tem nenhum exemplo de utilização prática.

Podias fazer um e submete-lo no nosso wiki.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga knd dizes "Não tem muito que se lhe diga, sacas o xml e parsa-lo com um parser." é exactmnt essa a minha duvida, em como sacar o xml. Nunca trabalhei com acesso via url por isso não sei cm é feito... e como sei como xegar ao xml? a minha duvida não está em como tratar o xml (por agora), mas sim como xegar a ele. daí ter dado o exemplo tvcabo.pt...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, então a tua dúvida é: como fazer download de um ficheiro usando um URL.

Seja xml ou qq outro ficheiro, o download é sempre feito da mesma forma.

Em java o rui carlos já deu um link para a documentação oficial, se usares outra linguagem é questão de procurares no google:

download url [linguagem]

se tiveres duvidas pergunta aqui nos fóruns

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já tinha escrito mas isto não colou :D

Em python, usas o método urllib.urlopen(link) e depois podes sempre sacar a libxml2 para parsar o XML. Usando o XPath como o Rui Carlos sugeriu, é bastante simples, ora vê este exemplo:

def esearch_parser(xml_source):

    doc = libxml2.parseDoc(xml_source)
    
    ls_PMID = [iD.content for ID in doc.xpathEval('//Id')]

    doc.freeDoc()   # Flush memory otherwise, parser breaks.
    return ls_PMID

O doc.xpathEval() leva dentros dos parentesis a tag que procuras. no meu caso era tudo o que tivesse na tag <Id></Id>.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

JoaoRodrigues não percebi lá muito bem o código. E do pouco que percebi pareceu-me que a tua função já admite que eu sei o source do XML, que não é o caso.

Em relação ao que o Rui Carlos disse, através deste link http://72.5.124.55/docs/books/tutorial/networking/urls/urlInfo.html, o que eu tenho que fazer é utilizar a função getFile e ver se tem algum XML?

Eu não sei se vocês tão a perceber a minha dúvida... eu "só" quero ir buscar um XML a um site... a questão é como chegar a esse XML, como sei que ele existe, como sei a URL para lá chegar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O URL tens que ser tu a dá-lo. Depois é só substituíres o "http://www.yahoo.com/" que está no código do link que mostrei pelo teu URL (naquele caso, o conteúdo do ficheiro é enviado para o ecrã, mas até um redireccionamento do output do programa permitia enviá-lo para um ficheiro). Se o ficheiro não existir, provavelmente recebes um excepção. Não estou a ver qual é a dificuldade.

Esse link que destes, parece-me que pouco tem a ver com o que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a analisar este tópico um pouco melhor e alvez perceba qual e a tua dficuldade.

Ao dizeres "ver se tem algum XML"

Estás a referir-te a descobrir automaticamente se um documento html tem um link para um XML no cabeçalho?

Tipo, tal como os browser fazem para auto-descobrir feeds xml?

É isso?

Se for, uma forma facil de sacar o seu url é usando precisamente xpath.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a analisar este tópico um pouco melhor e alvez perceba qual e a tua dficuldade.

Ao dizeres "ver se tem algum XML"

Estás a referir-te a descobrir automaticamente se um documento html tem um link para um XML no cabeçalho?

Tipo, tal como os browser fazem para auto-descobrir feeds xml?

É isso?

Se for, uma forma facil de sacar o seu url é usando precisamente xpath.

Desculpem o tempo de demora mas tenho estado sem net.

pedrotuga a minha duvida é exactamente essa, como sei o link para o xml e se esse xml existe e como lá posso chegar.

Se me pudessem dar um exemplo pratica era muito fixe,

thx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se olhares para o código fonte por exemplo desta página que estás a ler, encontras o seguinto no head deste documento html:

<link rel="alternate" type="application/rss+xml" title="Portugal-a-Programar - RSS" href="http://www.portugal-a-programar.org/forum/index.php?type=rss;action=.xml" />

Basicamente é isto que tens que 'sacar'.

A forma adequada de fazer isto é por as páginas para um objecto do tipo dom, e usar xpath para pedir o atributo href, dos elementos link, que estão dentro do head.

Uma forma mais simples ainda que um pouco menos robusta é sacares isso usando expressões regulares.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado por toda a ajuda ao longo do topico pedrotuga :(.

No entanto ainda tenho mais umas pequenas duvidas. No exemplo que deste, caso eu abra o file http://www.portugal-a-programar.org/forum/index.php?type=rss;action=.xml não me abre com a estrutura habitual de um ficheiro xml.

Podes-me indicar ou mostrar um exemplo prático de como se processa o pedido e o tratamento numa linguagem no-web (isto é,  sem sem em php e companhia), por exemplo java, ou o que seja.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao percebi bem a tua duvida, a dificuldade e' abrir o url e sacar o seu conteudo ou parsar o xml e sacar a informacao necessaria?

abrir o url e' facil, parsa-lo tambem nao custa muito

para abrir um url tens aqui em exemplo bom

http://72.5.124.55/docs/books/tutorial/networking/urls/readingURL.html

a unica coisa que tens que substituir e' o url e no ciclo while tens que concatenar a string em vez de enviar linha a linha para o output.

para parsar o xml odes usar o jaxp tens aqui um tutorial em pdf muito bem explicado com exemplos de codigo

ftp://ftp.oreilly.com/pub/conference/java2001/Hunter_et_al_jaxp.pdf

mas o que se passa com esse xml? aqui no meu computador parece-me tudo ok com ele.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha dúvida é como saber se um determinado site contem um xml com essa informação, e se o tiver como sei o URL para chegar até ele e posteriormente parsa-lo.

Do genero que já dei anteriormente: saber se o www.tvcabo.com nalgum local possui um XML com a programação de vários canais. Agora a questão é como sei que há e como o descobro para, posteriormente e a partir do exemplo de java que deste, fazer algo do genero URL prog = new URL("http://......qualquercoisa.xml") ou coisa do genero

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha dúvida é como saber se um determinado site contem um xml com essa informação, e se o tiver como sei o URL para chegar até ele e posteriormente parsa-lo.

Do genero que já dei anteriormente: saber se o www.tvcabo.com nalgum local possui um XML com a programação de vários canais. Agora a questão é como sei que há e como o descobro para, posteriormente e a partir do exemplo de java que deste, fazer algo do genero URL prog = new URL("http://......qualquercoisa.xml") ou coisa do genero

Faz um busca no site por links para ficheiros com extensão xml...

Parece-me que já estás a inventar, mas pronto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que já respondi a essa pergunta mas acabei por não dar um exemplo de código.

Ora bem, vais ter que aprender a usar algumas tecnologias.

Ou expressões regulares ou DOM e xpath.

rui carlos, essa solução é demasiado promitiva e tem muitas limitações. só alguns feeds é que usam essa extensão, e comvem tambem separar os que estão definidos no cabeçalho dos restantes.

Lê um tutorial sobre expressões regulares

ou sobre dom e xpath

A expressão regular par apanhar os links deve ser qq coisa parecida com isto:

<link(.*?)type="application/rss+xml"(.*?)href="(.*?)"(.*?)>

Mas a serio, lê tutoriais sobre estas tecnologias, se o tivesses feito por altura que este tópico foi iniciado já tinha o problema resolvido por esta hora. Claro que tens que saber para onde te virar, para isso é que servem por exemplo foruns como este.

começa a ler sobre essas tecnologias e a experimenta-las, elas estão disponiveis em praticamente todas as linguagens, se tiveres duvidas afixa aqui nos fóruns.

Rui, o procedimento que ele está a descrever é bastante usado, por exemplo pelos browsers.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A questão é onde é que ele vai procurar o XML. Não sei onde costumam aparecer os links para esses ficheiros, se aparecerem com a tag link, com um tipo claro, e numa página conhecida, é simples. A ideia com que fiquei é que ele queria fazer quase um web crawler.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aparecem precisamente como acabaste de dizer.

No cabeçalho (HEAD) , numa tag 'link', sendo o mimetype um dos que correspondem a um XML, não sei quais são mas é questão de ler a especificação.

Por exemplo, application/rss+xml coresponde ao um RSS.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora