09/10/2018, 23:54

Rss - Ajax - Tự động lấy tin

Tự động cập nhật tin tức bằng RSS và Load tin tức bằng Ajax
Tham khảo http://www.tintrongnuoc.net

1. Tool Lấy tin tức bằng công nghệ RSS (Application run 24/7)
2. Website hiện tin tức bằng công nghệ Ajax

Source code
1 Tool lấy tin tức
a. Database (MSSQL)
Cấu trúc Database gồm 3 Table (NHOMTIN, NGUONLINK_RSS,TINTUC)
NHOMTIN(Idnhom,TenNhom) vd (1,Thế giới);(2,Xã hội)....
NGUONLINK_RSS(idnguon, TenNguon, Link) vd(1,Tuoi Tre,linkrss)
TinTuc (idtin,tieude,tomtat,noidung,images)
b. Source Code
///Function lấy RSS của các link (vd LinkRSS của Tuổi trẻ mục tin thế giới)
http://www.tuoitre.com.vn/tianyon/Rs...px?ChannelID=2
Imports System.Xml.XPath

Public Sub GetFeed(ByVal RSSURL As String)
Try
' Bring back the Feed
Dim doc As New XPathDocument(RSSURL)
Dim nav As XPathNavigator = doc.CreateNavigator()
Dim iter As XPathNodeIterator = nav.Select("/rss/channel/item")
' Loop through the nodes
While iter.MoveNext()
' Get the data we need from the node
ProcessNode(iter.Current)
End While

Catch ex As Exception
Console.WriteLine(ex.Message.ToString())
End Try
End Sub
Sub ProcessNode(ByVal lstNav As XPathNavigator)
Dim rssTitle As String = "title"
Dim rssLink As String = "link"
Dim rssDescription As String = "description"
Dim rsspubDate As String = "pubDate"
' Get the child nodes
Dim iterNews As XPathNodeIterator = lstNav.SelectDescendants(XPathNodeType.Element, False)
' Loop through the child nodes
While iterNews.MoveNext()
' Save the current Name
Dim rssName As String = iterNews.Current.Name

' Is this the title?
If rssName.ToUpper() = rssTitle.ToUpper() Then
stitle = iterNews.Current.Value
End If
' Is this the Link?
If rssName.ToUpper() = rssLink.ToUpper() Then
link = iterNews.Current.Value
End If
' Is this the Description?
If rssName.ToUpper() = rssDescription.ToUpper() Then
description = iterNews.Current.Value
End If
If rssName.ToUpper() = rsspubDate.ToUpper Then
pubdate = iterNews.Current.Value
End If
If rssName.ToUpper = rsssource.ToUpper Then
source = iterNews.Current.Value
End If
End While
'them vao co so du lieu
insertNews(stitle, description, link, pubdate)
End Sub
'Mình chỉ tóm tắt source code thôi nhé , các bạn tự vận dụng cho chính chương trình của các bạn
'/////////////CÁCH LẤY TIN CHI TIẾT NỘI DUNG CỦA MỘT TIN TỨC
Không biết vì lý do gì mà các trang tin tức cung cấp link RSS lại không cung cấp tin chi tiết nội dung của trang tin đó. Link RSS chỉ cung cấp Tiêu đề tin, tóm tắt tin và link đến chi tiết tin của trang đó. Khi gặp khó khăn này, mình đã nghĩ ra một cách là đọc trang tin chi tiết đó, và chọn lọc ra phần chi tiết tin để thêm vào database của mình.
babylearnit viết 02:01 ngày 10/10/2018
mún viết bài thì viết cho trót, "quảng cáo" kiểu đó thà ko post còn hơn
tintrongnuoc viết 02:08 ngày 10/10/2018
Code website
Code load Ajax
Javascript
'//////////////////////////////
function CreateXMLDOM()
{
var AVersions =[ "MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Mic rosoft.XmlDom"];
// code for IE

for (var i = 0;i < AVersions.length;i++)
{
try
{
var oXmlDom = new ActiveXObject(AVersions[i]);
return oXmlDom;
}
catch (oError)
{
//loi
}
}


}
function LoadData(id,obj,content,group,page)
{
//var idchannel = txtidchannel.value;
var linkXml
var DivLoading = document.getElementById(obj);
DivLoading.innerHTML ="<table width=100% height=400px><tr><td align=center valign=center><IMG height=32 src='images/ajax-loader.gif' width=32 border=0><font color='#095B8A'><b>Loading...</b></font></td></tr></table>";
linkXml ="TrangLoadTinTuc.aspx";
// code for Mozilla, etc.
if (window.XMLHttpRequest)
{

var xmlhttp=new XMLHttpRequest()
}
// code for IE
else if (window.ActiveXObject)
{
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=function ()
{

if (xmlhttp.readyState==4)
{

if (xmlhttp.status==200)

{

var Divnoidung = document.getElementById(obj);
Divnoidung.innerHTML =xmlhttp.responseText;

}
else if (xmlhttp.status==404)
{
LoadData(id,obj,stt,page);
}
}
}
xmlhttp.open("GET",linkXml,true)
xmlhttp.send(null)
}
else
{
alert("Your browser does not support XMLHTTP.")

}

}
tme_power viết 01:54 ngày 10/10/2018
Cảm ơn anh bạn nhiều để mình thử xem nhé, có lỗi gì xẩy ra không
sasha viết 01:55 ngày 10/10/2018
Quote Được gửi bởi tintrongnuoc View Post
Không biết vì lý do gì mà các trang tin tức cung cấp link RSS lại không cung cấp tin chi tiết nội dung của trang tin đó. Link RSS chỉ cung cấp Tiêu đề tin, tóm tắt tin và link đến chi tiết tin của trang đó. Khi gặp khó khăn này, mình đã nghĩ ra một cách là đọc trang tin chi tiết đó, và chọn lọc ra phần chi tiết tin để thêm vào database của mình.
Chuẩn RSS nó thế bác ạ.
Cái cách bác nghĩ ra thế bác đã làm đc chưa :|
Brantanna viết 01:56 ngày 10/10/2018
Lấy tin bằng RSS thì dễ rồi, nhưng vấn đề làm sao để bóc tách thông tin từ tin RSS thì mới khó.
Có ai đã lam thành công phần lấy hình ảnh từ đường dẫn tin RSS chưa, xin hướng dẫn giúp.
Tôi có tìm được chương trình Vietspider cua nhuthuan.blogspot.com nhưng không dùng được, đây là một chương trình thu thập tin tực tự động nhưng chạy độc lập. Bây giờ tôi cũng muốn làm như vậy nhưng đưa trực tiếp lên web.
Trước đây, onboom.com có cho đoạn mã javascript làm việc này thì phải vì tôi tìm thấy trang hddvn.com sử dụng "Công nghệ cung cấp bởi onboom.com"
Anh em nào quan tâm và đã làm được, xin vui lòng gợi ý giúp hướng làm với. Tôi đang dùng ASP. Có thể dùng javascript cũng được.
Cám ơn trước,
Brantanna viết 02:09 ngày 10/10/2018
Hiện tôi đang viết code ASP cho web. Tôi cần giúp đỡ về vấn đề này, anh em nào đã làm thành công thì chia sẻ cho ít kinh nghiệm như hướng làm như thế nào cho đúng?

Vấn đề đặt ra:
+ Đã lấy được tin RSS từ các trang cung cấp tin RSS và hiển thị được lên web, nhưng đưa tin RSS như vậy thì nhìn đơn điệu quá, nếu có thêm hình ảnh thì rất hay. Nhưng RSS thì không có cung cấp hình ảnh!
+ Từ đường dẫn RSS làm thế nào để lấy được hình ảnh có trong tin đó --> liên quan đến bóc tách thông tin.

Tôi đã có tìm và thấy trang hddvn.com làm được việc này bằng:
"Hệ thống tin tự cập nhật từ VnExpress.net - Vietnam News Daily
Cung cấp công nghệ bởi Onboom Group"
Tuy nhiên, tôi không hiểu rõ lắm về đoạn javacript mà hddvn.com dùng. Trên onboom.com cũng không còn cung cấp công nghệ này nữa thì phải.
Trên trang nhuthuan.blogspot cua Nhữ Đình Thuận có phần mềm VietSpider làm việc này. VietSpider nghe nói là mã nguồn mở nhưng không thấy cung cấp mã nguồn. Vả lại, VietSpider cũng không dùng được vì chỉ cố định lấy tin có 1 ngày và cũng không liên quan gì đến việc cập nhật tự động trên web!

Có anh em nào quan tâm đến vấn dề này thì cùng trao đổi nghiên cứu nha. (Code bằng ASP hoặc javascript)
tintrongnuoc viết 02:10 ngày 10/10/2018
http://www.tintrongnuoc.net
Đây là sản phẩm của mình , theo công nghệ RSS + Ajax, mình lấy tin RSS và lấy hình ảnh, và chi tiết của tin tức đó, các bạn vào xem và tham khảo

Cách lấy tin chi tiết như sau:

các bạn dùng kỷ thuật đọc trang tin (HttpWebResponse)
các bạn phải biết điểm bắt đầu và kết thúc của trang tin chi tiết đó
VD báo tuổi trẻ, điểm bắt đầu của nó là "Chuoi tieu de tin tuc do" , điểm kết thúc là
"</div>"
Function loctintuoitre(ByVal link As String, ByVal chuoitim As String) As String

Dim noidung As String
Dim chuoi As String
Dim sr As StreamReader
Try
Dim req As HttpWebRequest = WebRequest.Create(link)
'Get the data as an HttpWebResponse object
Dim resp As HttpWebResponse = req.GetResponse()
'Convert the data into a string (assumes that you are requesting text)
sr = New StreamReader(resp.GetResponseStream())
Dim results As String = sr.Read
Dim Chuoi_kiemtra As String
Dim tieude As String
tieude = chuoitim.ToLower
tieude = Replace(tieude, """", "")
Do While Not results Is Nothing
results = sr.ReadLine()
If InStr(results.ToLower, "<body") Then
results = sr.ReadLine()
Do While Not results Is Nothing
results = sr.ReadLine()
Chuoi_kiemtra = results
If results <> "" Then
Dim kiemtra As String = Replace(Chuoi_kiemtra.ToLower, """", "")
If (InStr(kiemtra, tieude) > 0) Or (InStr(kiemtra, "<script>gettimestring(") > 0) Then
Do While Not results Is Nothing
If results <> "" Then
chuoi = chuoi + results
If InStr(results.ToLower, "</div>") Then
GoTo hien
End If
End If
results = sr.ReadLine()
Loop

End If
End If
Loop
End If
'noidung = noidung + results
Loop

Catch wex As WebException

End Try
hien:
sr.Close()
loctintuoitre = chuoi
End Function
conmalele viết 01:56 ngày 10/10/2018
Cái này làm từ đời nào rồi, Việt Nam cũng có nhiều rồi, thế mà mãi vẫn chưa có dự án Open Source

RSS thì tùy cái có hình, cái không có.

Lấy tin bằng RSS thì dễ rồi, nhưng vấn đề làm sao để bóc tách thông tin từ tin RSS thì mới khó.
Vậy thì chắc nó là RXX quá
doangia viết 01:56 ngày 10/10/2018
Xử lý chuỗi cơ bản là xong ... chỉ lười là lâu lâu thằng nhà báo lại đổi cấu trúc phải sửa lại .
Bài liên quan
0