Jump to content


Photo

Pegando Url Rss Com Asp


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Ronaldo Bueno

Ronaldo Bueno

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 10/08/2010, 16:43

Pessoal, já coloquei em outros fóruns mas não obtive respostas. se alguém puder me ajudar agradeço.

estou com 3 problemas: vou explicá-los bem detalhado.

Vou dizer o que pretendo e depois como fiz, assim se alguém puder me ajudar agradeço muito.

Quero uma página em HTML que mostre o conteúdo de várias URL´s RSS Cadastradas em banco ACCESS, ou seja tenho um banco assim:

Posted Image

na página asp, abro o banco e pego registro por registro, fazendo com que ele leia a URL e grave em um outro banco assim:

<!--#include file="include/open-tables.asp" -->

<%

set RSabre = server.createobject("adodb.recordset")
SQLabre = "SELECT * FROM channel"
RSabre.open SQLabre, conn, 2, 2

while not RSabre.eof

url = RSabre("url")
fonte = RSabre("source")
canal = RSabre("channel")

Set xml = Server.CreateObject("MSXML2.DOMDocument.3.0")
xml.async = False
xml.SetProperty "ServerHTTPRequest", True
xml.ValidateOnParse = False
xml.PreserveWhiteSpace = False

If Not xml.Load(url) Then
Response.Write ""
Else
Set nodeList = xml.getElementsByTagName("item")


For Each objNode In nodeList


For Each objNode2 In objNode.childNodes
Select Case objNode2.nodeName
Case "title" : title = objNode2.firstChild.nodevalue
Case "link" : link = objNode2.firstChild.nodevalue
Case "pubDate" : pubDate = objNode2.firstChild.nodevalue
End Select
Next


title = Replace(title,Chr(39),Chr(39)&Chr(39))

set RSgrava = server.createobject("adodb.recordset")
SQLgrava = "SELECT * FROM grava_dados where fonte='"&fonte&"' and canal='"&canal&"' and titulo='"&title&"' and link='"&link&"' and data='"&pubDate&"'"
RSgrava.open SQLgrava, conn, 2, 2

dia = Mid(pubDate, 5, 3)

if RSgrava.eof then

dim RSgravau
Set RSgravau = Server.CreateObject("ADODB.Recordset")
RSgravau.Open "grava_dados", Conn, 2, 2

RSgravau.addnew
RSgravau("fonte") = fonte
RSgravau("canal") = canal
RSgravau("titulo") = title
RSgravau("link") = link
RSgravau("dia") = dia
RSgravau("data") = pubDate
RSgravau.update

end if

Next
Set nodeList = Nothing
End If

Set xml = Nothing

rsabre.movenext
wend

RSabre.close
Set RSabre = Nothing

RSgrava.close
Set RSgrava = Nothing

RSgravau.close
Set RSgravau = Nothing
%>

<!--#include file="include/close-tables.asp" -->

Alguém poderia me perguntar, porque você lê as URLS e grava no banco de dados ? porque o meu primeiro problema começa ai:

eu também tenho a página apenas lendo e mostrando, acontece que quando ele coloca na página a ordem que ele faz isso é do banco de canal, então fica várias linhas com o primeiro canal e depois muda para o outro. isso significa que a ordem das notícias não ficam do jeito que eu queria.

então resolvi gravar no banco para eu poder dar um select depois para mostrar as noticias exatamente como é nas páginas RSS, por ordem de data e hora.

Com isso tenho mais um problema. ele grava tudo certo, mas o campo pubDate (original da URL RSS) grava no meu banco como string assim: Sat, 07 Aug 2010 18:35:17 -0300, e isso não da para ordenar, porque fica sem lógica.

Ai tentei pegar o dia somente desse dado: dia = Mid(pubDate, 5, 3) e gravar também no banco como dia, mas também não estou consegundo ordenar. fica tudo fora do que desejo.

Outro motivo que optei por gravar no banco, é que queria fazer uma div onde fosse caindo a notícia mais nova, ou seja ele abre mostra as atuais por ordem de chegada e quando entrar outra no banco, ele abaixa as antigas e a nova fica em cima.

Será que fui claro nos meus problemas ?

Agradeço muito pela colaboração

Esqueci. já andei por tudo no google e nada, por isso resolvi abrir o assunto.

Alguém saberia responder como faço para converter a string (Sat, 07 Aug 2010 18:35:17 -0300) para o formato 00/00/0000 00:00:00 ?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq