• Hiện tại trang web đang trong quá hình chuyển đổi và tái cấu trúc lại chuyên mục nên có thể một vài chức năng chưa hoàn thiện, một số bài viết và chuyên mục sẽ thay đổi. Nếu sự thay đổi này làm bạn phiền lòng, mong bạn thông cảm. Chúng tôi luôn hoan nghênh mọi ý kiến đóng góp để chúng tôi hoàn thiện và phát triển. Cảm ơn

CHUYÊN ĐỀ: YÊU CẦU, THẢO LUẬN TEMPLATE SPB INSIGHT

cái template của Thanh Niên online sao nó hay bị chạy lộn xộn hết trơn vậy các bác?thỉnh thoảng trong những mục như CNTT, Chính Trị-Xã hội, Giáo dục nó đều load những tin trong Trang chính, sau khi delete hết rồi add lại thì hết, nhưng mấy ngày nay thì bị lại rồi, mục nào cũng giống y như nhau, load toàn tin của Trang chình ko hà? các bác có ai bị như vậy ko?
 

Badamgiak23

Super V.I.P
1 số dòng lệnh cần nhờ bác KAN giải đáp giúp :
-function newarticle(tag)
-if(tag.getAttribute("class").indexOf('Copy')!=-1)
-d.getElementsByAttr("a","class","Copy")
-("span","class","TitleLink")
-"Span","Class","NewsTitle"
-var nodeHeader = d.getElementsByTagName("h2")[0];

Những cái này bác dựa vào đâu mà khai báo vậy.Ở bài hướng dẫn đầu tiên sử dụng Dom Inpector của FireFox,em đã làm ở các trang Web thì chỉ có dạng ("Table", "Id", "...").

Cảm ơn bác nhiều !
 

Kan

New Member
1. newarticle(tag) là hàm Kan viết để tạo 1 tin từ thẻ tag. Thẻ này luôn có tên là a (nó chứa đường link đến tin) trong đó thường dùng:
- tag.href: link đến tin
- tag.innerText: nội dung của thẻ (sẽ là đề mục của tin)

2. Hàm getAttribute, trả về giá trị 1 thuộc tính có giá trị string. Ví dụ tag.getAttribute("class") lấy thuộc tính class của thẻ tag.

3. Hàm str1.indexOf(str2) trả về vị trí xuất hiện đầu tiên của xâu str2 trong str1. Nếu xâu str2 kô có trong str1 thì sẽ trả về -1.

4. Khi dùng DOM, ở mỗi thẻ (table, span, td...) có thể sẽ có các thuộc tính class, id...
Hình dưới thẻ DIV có thuộc tính class = page
dom.png


Trong hướng dẫn của Spb Insight ở bài đầu có hướng dẫn sử dụng chi tiết các hàm trên. Với 1 ít lệnh JScript bạn có thể tìm trong mấy quyển về lập trình HTML. Mình chỉ có 1 quyển tiếng Nga, chắc kô up đc :)
 

Badamgiak23

Super V.I.P
Gửi bác KAN.(khó quá)...
Em viết Templates lấy tin từ trang sau : http://www.tinthethao.com.vn/details.asp?Cat_ID=21&Cat_Sub_ID=34&page_id=1

Đây là Code của em !

<?xml version="1.0"?>
<template version="1.0">

Khai báo :

<channel>
<name>Tin the thao</name>
<url>http://www.tinthethao.com.vn/details.asp?Cat_ID=21&Cat_Sub_ID=34&page_id=1</url>
</channel>

Lấy toàn bộ Link của tin,đã loại trừ các phần Mục tin lớn.

<parse_channel> <![CDATA[
var d = new Document(channel.url);
var tags = d.getElementsByTagName("a");

for (i in tags)
{
var href = tags.getAttribute("href");
if((href)&&(href.indexOf("view.asp")!=-1))

{
var article = new Article();

article.id = href;
article.url = href;
article.header = tags.innerText;

channel.articles.push( article );
}
}
]]> </parse_channel>

Tải nội dụng tin,dùng DOM,lấy thẻ Span,class,bodytxt

<parse_article> <![CDATA[
var d = new Document(article.url);
article.body='';
var nodebd = d.getElementsByAttr("Span","class","bodytxt")[0];
for(var node=nodebd.nextSibling;node;node = node.nextSibling)
article.body += node.outerHTML;
]]> </parse_article>
</template>

Nhưng kết quả em thu được hạn chế quá bác à,chỉ được danh sách các bài viết mà thôi,không tải được nội dung.
Bác giúp em phân tích cụ thể 1 cái Templates này nhé.Cảm ơn bác nhiều,em đã download giáo trình Jscript về nghiên cứu nhưng không phải dân chuyên nên khó khăn quá...
 

Badamgiak23

Super V.I.P
bác KAN phân tích giúp em 2 cái mẫu này nhé :
-ThanhnienRSS
<parse_article> <![CDATA[
var d = new Document(article.url);
var body = d.getElementsByAttr("Span","class","indexstorytext")[0].parentNode.parentNode;; article.body = body.outerHTML;
]]> </parse_article>
</template>

-SohoaRSS
<parse_article> <![CDATA[
var d = new Document(article.url);
article.body='';
var nodebd = d.getElementsByAttr("p","class","Title")[0];
for(var node=nodebd.nextSibling;node;node = node.nextSibling)
article.body += node.outerHTML;
]]> </parse_article>
</template>
 
Chỉnh sửa cuối:

Kan

New Member
Ở temp tin thể thao:

Mã:
var nodebd = d.getElementsByAttr("Span","class","bodytxt")[0];
Đoạn này tìm đc tiêu đề của 1 tin (hàng chữ đầu in to, đậm)

Mã:
for(var node=nodebd.nextSibling;node;node = node.nextSibling)
article.body += node.outerHTML;

Đây sẽ thêm các thẻ sau, đồng cấp với span ở trên vào body. Nhưng sau Span của site trên là đường cùng rồi, nên sẽ có lỗi.

Bạn có thể lấy toàn bộ nội dung bằng cách lấy Div chứa span. Ở đây là nodebd.parentNode. Cụ thể

article.body = nodebd.parentNode;

Hàm parentNode trả về thẻ to hơn chứa thẻ hiện tại
 

LamAnhThu

New Member
dung phần mềm này chán quá! Em không hiểu vì sao nhưng khi em down về thi toàn la báo cũ, có trang từ năm ngoái rồi!!!!!!!!!!!!!!!!!!!!!!
 
dung phần mềm này chán quá! Em không hiểu vì sao nhưng khi em down về thi toàn la báo cũ, có trang từ năm ngoái rồi!!!!!!!!!!!!!!!!!!!!!!
có thể là do bạn chưa chỉnh lại Channel Properties nên nó load luôn những tin cũ! bạn vào Menu>Options, chọn thẻ Content>Default Channel Properties, chọn thẻ Cleaning, chek vào mục "Automatically delete article older than xxx", phía bên dưới bạn chọn số ngày tương ứng với những tin mà bạn muốn nhận về trong xxx ngày nhé!
PS: một điều nữa là bạn nên load những template đã được fix lỗi nhé! Thân!
 

Badamgiak23

Super V.I.P
Gửi bác KAN.Templates tin thể thao.

<parse_article> <![CDATA[
var d = new Document(article.url);
article.body='';
var nodebd = d.getElementsByAttr("Span","class","bodytxt")[0];
for(var node=nodebd.nextSibling;node;node = node.nextSibling)
article.body = nodebd.parentNode;]]> </parse_article>
</template>

Em đã thử lấy DIV chứa Span nhưng cái DIV này lại không tìm được thuộc tính của nó.Các giá trị Id,Class không có.Chỉ mỗi Span (Dòng in đậm) là có thuộc tính (Class,bodytxt).
Em đã thử hàm của bác cho,trả về thẻ to hơn chứa thẻ hiện tại (Dòng in đậm) nhưng vẫn chỉ tải được có mỗi cái tiêu đề.
Ở 1 số Templates bác làm em cũng thấy bác chỉ lấy phần tiêu đề nhưng vẫn tải được toàn bộ nội dung,nhưng do mỗi Template viết 1 cách không có cái nào giống cái nào --> khó quá.

Bác giúp em vụ này nhé.
 

Kan

New Member
Mã:
<parse_article> <![CDATA[
var d = new Document(article.url);
article.body='';
var nodebd = d.getElementsByAttr("Span","class","bodytxt")[0];
for(var node=nodebd.nextSibling;node;node = node.nextSibling)
article.body = nodebd.parentNode;]]> </parse_article>
</template>

for(var node=nodebd.nextSibling;node;node = node.nextSibling) Vòng for này kô cần vì temp sẽ sai hoàn toàn.
Đoạn này mình ghi thiếu: article.body = nodebd.parentNode; (kô thể gắn nội dung = 1 thẻ đc) Đúng ra phải là article.body = nodebd.parentNode.outerHTML; Tuy nhiên vùng này quá lớn với những thứ kô cần thiết nên có thể thêm bộ lọc sau:

article.body='';
var nodep = d.getElementsByAttr('p','align','justify')[0];
for(var node = nodep;node;node = node.nextSibling)
if(node.outerHTML.indexOf('pop_print.asp?news_id')==-1)
article.body+=node.outerHTML;
else break;

Kan_27032007_20220.png
 

ngheovihifi

New Member
VCBS 1.2

Template gồm 3 phần:

1. VCBS1 và VCBS2: 2 nửa của 109 mã CK bao gồm các mục:
  • Mã CK
  • MC, ĐC
  • KL (Tổng KL của 3 lần GD)
  • Thay đổi (+/-, %)
  • 12 Tháng (Min, Max)
  • P/E

Kan_13032007_143257.png
Kan_13032007_143301.png

Đây là bảng đầy đủ của tất cả các mã CK, tuy nhiên có lược bỏ về nội dung để các bạn tiện theo dõi.

2. VCBS0:

- Bảng này chứa các cột với các chỉ số y hệt bảng gốc, tuy nhiên chỉ của các Index mà bạn đang đầu tư hoặc cần theo dõi chi tiết:

Kan_13032007_143326.png
Kan_13032007_143331.png

- Để thay đổi danh sách các mã CK, hãy mở template VCBS0.xml và tìm đến đoạn đầu:

<?xml version="1.0" encoding="utf8"?>
<template version="1.2" name="VCBS0-các chỉ số chứng khoán quan tâm" author="Kan - Pdaviet.net" author-email="tdkavn@yahoo.com" date="13-Mar-2007">
<channel>
<name>VCBS0</name>
<url>http://www.vcbs.com.vn/vietnam/kqgd.asp</url>
</channel>
<parse_channel> <![CDATA[
var favour = new Array('FPT','ABT','COM','DPC');//Tên các chỉ số cần xem


và thêm hoặc bớt các mã CK vào danh sách (VIẾT HOA và trong dấu '').
bác coi lại dùm nhé...ko tài nào update được cái này.thanks
 

ngheovihifi

New Member
PHP:
Số hoá có cấu trúc gần giống Ngôi sao, chỉ cần sửa 1 ít trong xử lý.

Temp Số Hóa

Kan_27022007_01412.png

ngheovihifi: lỗi của VCBS đã từng có người hỏi, nguyên nhân là bị tràn bộ nhớ do xử lý hơn 100 thành phần
Mã:
Not enough memory, allocated 7588587, trying to allocate another 512 bytes.
Sửa bằng cách mỗi lần cập nhật thay vì nhấn Update thì chọn Clean Update để load lại hoàn toàn dữ liệu.

Kan_26022007_232828.png
Kan_26022007_232914.png

sao em cũng xài SPB insight ver 1.0.2 mà chẳng thấy cái chỗ nào có menu clean update như bác Kan đưa nhỉ...?
pc_capture2.jpg

pc_capture1.jpg
 
Chỉnh sửa cuối:

ngheovihifi

New Member
trời...cám ơn bác quá...vì em thấy khả năng mình chưa đủ công lực để tạo được Tem....nên em bỏ qua cái hướng dẫn này....bác ko nhắc thì em cũng chịu mất...
 

NguyenQuang

Super V.I.P
sao lại ko được ?? :-/ ?? bạn thử vào Menu-->Options-->Network coi coi có chek vào mục "Use only free of charge internet connection" ko? nếu có thì bỏ nó đi! nhưng mà nhớ suy nghĩ cho kĩ trước khi update bằng GPRS nhé, tốn bộn tiền đấy! :D
"sao lại ko được ?? ?? bạn thử vào Menu-->Options-->Network coi coi có chek vào mục "Use only free of charge internet connection" ko? nếu có thì bỏ nó đi! nhưng mà nhớ suy nghĩ cho kĩ trước khi update bằng GPRS nhé, tốn bộn tiền đấy!"

Tôi đã làm đúng như thế này nhưng không thể nào update được bằng GPRS, còn nếu update babf wifi thì chạy vù vù. Có bác nào đã dùng thứ xin chỉ giáo giùm
Cám ơn nhiều
 

Badamgiak23

Super V.I.P
Gửi bác KAN.
Em đã làm theo hướng dẫn của bác nhưng vẫn không được bác à.
Thử làm 1 trang tương tự : www.badamgia.com
nhưng kết quả vẫn chỉ được phần tiêu đề,không tải được nội dung.
Code lấy phần tiêu đề trang www.badamgia.com
<?xml version="1.0"?>
<template version="1.2">
<channel>
<name>Tin Juventus FC</name>
<url>http://badamgia.com/index.php?act=view&code=cat&pid=3&cid=4</url>
</channel>
<parse_channel> <![CDATA[
var d = new Document(channel.url);
var tags = d.getElementsByTagName("a");

for (i in tags)
{
var href = tags.getAttribute("href");
if((href)&&(href.indexOf("index.php?act=view&code=post&pid=3&cid=4&id")!=-1))

{
var article = new Article();

article.id = href;
article.url = href;
article.header = tags.innerText;

channel.articles.push( article );
}
}
]]> </parse_channel>

</template>


Toàn bộ phần Code tải nội dung này của em coi như không có ý nghĩa :
<parse_article> <![CDATA[
var d = new Document(article.url);
article.body = "";
var nodeBody = d.getElementsByAttr("DIV", "class", "test)[0];
for (var node = nodeBody.nextSibling; node; node = node.nextSibling)
if (node.nodeName != "hr")
article.body += node.outerHTML;
else
break;
]]> </parse_article>
</template>


Ở trang tinthethao cũng tình trạng thế này.Đã thay thế bằng đoạn Code bác cho nhưng không được.
Bác nghiên cứu giúp em nhé.
Thanks !!!
 
Chỉnh sửa cuối:

HaChau

Super V.I.P
e cài SPB INSIGHT ko update dc,e dùng 02mini các bác nào giúp e
Spb Insight update được khi và chỉ khi PPC đã kết nối vào Internet. Cách dễ nhất để kiểm tra là bạn dùng Pocket Internet Explorer (PIE) truy cập vào trang web bất kỳ (google.com, pda.vn, ...). Nếu không vào được Internet thì bạn đọc các bài thảo luận tại topic này xem thử bởi rất có thể là do ActiveSync.
 

SirKojiro

New Member
bác up hộ cái Insight Template của Ppcvn.com\Mua bán ở trong hình trên với.
Thank bác.
 
Top