在前一篇文章裡,我們討論了新聞採集程式的原理。今天要來具體實現了。
首先,程式將用到
控制項(在
indy clients
面板)。關於該控制項的詳細文件,
e文好的朋友可以登陸這裡檢視:
本程式用到的
get方法在第
53頁。網上關於
indy
的幫助文件也整理了不少,可是我一直沒找到中文的。在本程式中,我們只使用
控制項的乙個方法,就是
方法。該方法是這樣宣告的:
function get(aurl: string): string; overload;
aurl
引數,是
string
型別,指定乙個
url位址字串。函式返回也是
string
型別,返回網頁的
html
原始檔。比如我們可以這樣呼叫:
);呼叫成功後,
tmpstr
變數裡儲存的就是網易主頁的**了。
接下來,講一下資料的擷取,這裡,我定義了這麼乙個函式:
function tform1.getstr(strsource,strbegin,strend:string):string;
varin_star,in_end:integer;
begin
in_star:=ansipos(strbegin,strsource)+length(strbegin);
in_end:=ansipos(strend,strsource);
result:=copy(strsource,in_sta,in_end-in_star);
end;
解釋一下該函式的三個引數:
strsource
:string
型別,表示
html
原始檔。
strbegin
:string
型別,表示擷取開始的標記。
strend
:string
,表示擷取結束的標記。
函式返回字串
strsource
中從strsource
到strbegin
之間的一段文字。
比如:
strtmp:=tform1.getstr(『123456789』,『12』,『78』);
執行後,
strtmp
的值為:』
3456』 。
關於函式裡用到的
ansipos
和copy
,都是系統定義的,可以從
delphi
的幫助檔案裡找到相關說明,我在這裡也簡單羅嗦一下:
function ansipos(const substr, s: string): integer
返回substr在s
中第一次出現的位置。
function copy(strsource,in_sta,in_end-in_star): string;
返回字串
strsource中,
從in_sta
(整型資料)開始到
in_end-in_star
(整型資料)結束的字串。
有了以上函式,我們就可以通過設定各種標記,來擷取想要的文章內容了。在程式中,比較麻煩的是我們需要設定許多標記,要定位某一項內容,必須設定它的開始和結束標誌。比如要取得網頁上的文章標題,必須事先檢視網頁**,檢視出文章標題前邊和後邊的一些特徵**,通過這些特徵**,來擷取文章的標題。
**為:
文章標題
作者出處
這裡是文章內容正文。
第一步,我們用
);將網頁**儲存在
strsource
變數中。
然後定義
strtitle
、strauthor
、strcopyfrom
、strcontent
:strtitle:= getstr(strsource,』 』,』
』):strauthor:= getstr(strsource,』 』,』 』):
strcopyfrom:= getstr(strsource,』 』,』
』):strcontent:= getstr(strsource,』 ,』
』):
這樣,就能把文章的標題、作者、出處和內容分別儲存在以上變數中。
這樣就完成了乙個簡單的擷取過程。
最後,是將變數的值儲存到本地資料庫,這一步不講了,相信大家都會。
以上的例子,非常簡單,如果真正做乙個採集程式,還有許多實際因素要考慮進去。比如:錯誤處理、多執行緒採集、遠端入庫、文章內廣告內容的過濾、自動分類等等。
小小天堂
2005/05/22
用Delphi製作動態選單
所謂動態選單是指選單項隨著程式的操作變化而變化。現在,我們用delphi來實現這一功能,具體步驟如下 1 首先,確定動態選單的資料 即要確定動態選單標題是來自windows的系統登錄檔,還是來自乙個資料庫,或者是來自乙個子目錄,主要由程式的功能而定。這裡假設主視窗名為mainform,上面已有主選單...
delphi製作的托盤程式
unit umain inte ce uses windows,messages,sysutils,classes,graphics,controls,forms,dialogs,shellapi,menus,buttons,extctrls const mousemsg wm user 1 iid...
delphi製作的托盤程式
unit umain inte ce uses windows,messages,sysutils,classes,graphics,controls,forms,dialogs,shellapi,menus,buttons,extctrls const mousemsg wm user 1 iid...