Conheça o Plugfeed | » Início » Programação » ASP » Abrindo notícia em página através de FEED
Conheça o Plugfeed | » Início » Programação » ASP » Abrindo notícia em página através de FEED -->
 
Avaliação: | Publicado em: 11/10/2007
Abrindo notícia em página através de FEED
Alexandre de Luccia Analista e Desenvolvedor de Sistemas. Cursando Análise e Desenvolvimento de Sistemas no IBTA
Abrindo notícia em página através de FEED

Veja como é simples ter seu site atualizado com notícias em tempo real abrindo em seu site. O legal deste código é que você consegue abrir a notícia diretamente em seu site, sem abrir em uma nova página ainda podendo definir o o layout das notícias, é relativamente simples mas não existe muitos exemplos na web.

Abaixo como desenvolver as páginas para inserir em seu site.

Iremos criar duas páginas:
[B]ListaNoticias.asp[/B] e [B]LeNoticia.asp[/B]

 

Vamos iniciar pela página que faz a leitura da notícia e exibe a lista de notícia para você:

[B]ListaNoticias.asp[/B]
[CODE]<%
   
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      ' SCRIPT PARA LEITURA E EXIBIÇÃO DE NOTÍCIAS DA FOLHA DE SP '
      '   Desenvolvido em 5/9/2007. Última revisão em 27/9/2007   '
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
 'Definição da codificação da página
 Response.CharSet="utf-8"

 'Defina aqui a URL do Feed 
 FeedURL = "http://feeds.folha.uol.com.br/folha/informatica/rss091.xml"


 'Crio o objeto MSXML que baixará o feed XML
 Set xmlDoc = CreateObject("MSXML.DOMDocument")
 xmlDoc.async = false
 xmlDoc.setProperty "ServerHTTPRequest", true
 xmlDoc.load(FeedURL)

 'Se houver algum erro durante o carregamento do XML
 If (xmlDoc.parseError.errorCode <> 0) then
  Response.Write "Não foi possível abrir o XML."
 Else
  'Senão inicio a leitura do XML
  
  'Leio o nó "Canal" para baixar informações sobre o XML
  Set NohsDeCanal = xmlDoc.selectNodes("//channel/*")
  For Each entry in NohsDeCanal
   If entry.tagName = "title" then
    TituloDoCanal = entry.text
   ElseIf entry.tagName = "description" then
    DescricaoDoCanal = entry.text
   ElseIf entry.tagName = "link" then
    LinkDoCanal = entry.text
   End If
  Next
   
  'Inicio a leitura do nó que contém os itens (matérias) da Folha
  Set NohsDeItem = xmlDoc.selectNodes("//item/*")
  For Each item in NohsDeItem
   If item.tagName = "title" then
    ItensTitulo = ItensTitulo & item.text & "#%#"
   ElseIf item.tagName = "link" then
    ItensLink = ItensLink & item.text & "#%#"
   ElseIf item.tagName = "description" then
    ItensDescricao = ItensDescricao & item.text & "#%#"
   End If
  Next
   
  'Crio um array com todos os itens para posterior leitura/tratamento
  arrTitulos = split(ItensTitulo,"#%#")
  arrLinks = split(ItensLink,"#%#")
  arrDescricoes = split(ItensDescricao,"#%#")
  
  
  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  ''                        Aqui começo a montar a página                         ''
  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  
  'Inicio a tabela que conterá os links para as notícias
  Response.Write "<table>"
  
  'Mostro todos os links de matérias para o XML
  For i=0 to uBound(arrTitulos)
   
   'Trato o link para a matéria para que o link não
   'apareça no GET da página que lê as notícias por completo
   %><style type="text/css">
<!--
a:link {
 color: #000000;
 text-decoration: underline;
}
a:visited {
 text-decoration: underline;
 color: #000000;
}
a:hover {
 text-decoration: none;
 color: #000000;
}
a:active {
 text-decoration: underline;
 color: #000000;
}
-->
</style>
    <tr>
     <td><font face="Verdana" size="1"><a href="LeNoticia.asp?url=<%=arrLinks(i)%>"><%=arrTitulos(i)%></a></font></td>
    </tr>
       <p>
         <%
  Next
  
  'Fecho a tabela que conterá os links para as notícias
  Response.Write "</table>"
  
 End If
 
 
 'Elimino todos os itens e objetos criados
 Set xmlDoc = Nothing
 Set NohsDeCanal = Nothing
 Set NohsDeItem = Nothing
%>
</p>     
[/CODE]

Resultado página:


Agora vamos para a página que exibe a notícia formatada em seu site:

[B]LeNoticia.asp[/B]
[CODE]
<style>
h1 {
 font-family: verdana;
 font-size: 12px;
 color: #0033CC;
}
p {
 font-family: verdana;
 font-size: 10px;
 text-align: justify;
}

.fe230 {
 width: 235px;
 float: left;
 padding: 10px;
}

.fd230 {
 width: 235px;
 float: left;
 padding: 10px;
}

.fe175 {
 width: 180px;
 float: left;
 padding: 10px;
}

.fd175 {
 width: 180px;
 float: left;
 padding: 10px;
}

.fo1c {
 font-family: verdana;
 font-size: 10px;
 color: #999999;
}

.fo1l {
 font-family: verdana;
 font-size: 10px;
}

</style>

<%
     
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      ' SCRIPT PARA LEITURA E EXIBIÇÃO DE NOTÍCIAS DA FOLHA DE SP '
      '   Desenvolvido em 5/9/2007. Última revisão em 27/9/2007   '
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 'Definição da codificação da página
 Response.CharSet="utf-8"

 'Requisito a URL
 url=Request("url")
 
 'Só executo a página se algum parâmetro vier pela URL
 If url<>"" Then

  'Crio o objexto XmlHttp que vai baixar a página da folha de SP 
  Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
  'Abro a URL
  objXmlHttp.Open "GET", URL, False
  objXmlHttp.Send
  
  'Crio o objeto stream -> Este é um FIX que corrige o bug dos acentos
  Set objStream = Server.CreateObject("ADODB.Stream")
  objStream.Open
  objStream.Type=2
  
  'Escreve para o objeto stream o conteúdo que veio pelo XMLHttp
  objStream.WriteText (objXmlHttp.responseBody)
  objStream.Position=0
  'Modifica o charset da página para LATIN-1. Isso faz com que
  'os acentos sejam lidos corretamente
  objStream.Charset = "latin1"
  
  'Passa para a variável "Resultado" o texto com os acentos já convertidos
  Resultado = objStream.ReadText(-1)
  
  'Apago os objetos pois não os usarei mais
  objStream.Close
  Set objStream = Nothing
  Set objXmlHttp = Nothing
  
 
  'Aqui eu trato o HTML da página da folha.
  
  'Pego o título da notícia  
  Titulo = Split(Resultado,"<!--TITULO-->")
  Titulo2=Split(Titulo(1),"<!--/TITULO-->")
  ArtigoTitulo = Titulo2(0)
 
  'Pego o corpo da notícia
  Texto = Split(resultado,"<!--TEXTO-->")
  Texto2=Split(texto(1),"<!--/TEXTO-->")
  Texto3=Split(texto2(0),"<div id=""articleEnd"">")
  ArtigoTexto = texto3(0)
  
 
  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  ''                            Aqui eu monto a página                            ''
  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  
  Response.Write "<h1>" & ArtigoTitulo & "</h1>"
  Response.Write ArtigoTexto

 'Senão tiver vindo nenhum parâmetro pela URL eu informo
 Else
  Response.Write "Nenhum parâmetro de URL foi passado para a página"
 End If
%>

 <p align="right"><font face="Verdana" size="1"><a href="javascript:history.back()">< Voltar</a></font></p>
[/CODE]

Resultado final:


O código esta todo comentado e foi desenvolvido por: Bruno Barreto.

Vou continuar pesquisando novos scripts que seja útil no dia-dia de todos!

Lembrando que você pode usar o contador da máteria anterior e adaptar para este código.

Qualquer dúvida entre em contato comigo deixando um comentário.

Abraços!


Alexandre de Luccia

Arquivos anexos ao artigo

Olá Alexandre!

testei a script com outro endereço e ao abrir a materia dá erro, oque ser?

http://www.cancaonova.com/portal/canais/rss/noticia_geral.xml.php


Microsoft VBScript runtime error '800a0009'

Subscript out of range: 'number: 1'

/feeds/LeNoticia.asp, line 97

Alexandre de Luccia <alexandre.luccia@gmail.com>
Tem que ter extenção .xml
Alexandre de Luccia <alexandre.luccia@gmail.com>
Tem que ter .xml








Um produto Detetive.net