用delphi製作新聞採集程式(二)

2021-04-09 07:54:05 字數 2634 閱讀 2080

在前一篇文章裡,我們討論了新聞採集程式的原理。今天要來具體實現了。

首先,程式將用到

控制項(在

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...