目前網頁采集多是3P代碼(3P是ASP,PHP,JSP)。易動易科技公司BBS中最具代表性的新聞采集系統,網上流傳的新浪新聞采集系統,都是ASP程序使用,但是理論上速度不是很好。用其他軟件嘗試多線程采集是不是更快?答案是肯定的。可以用DELPHI,VC,VB,JB,但是PB好像很難做。下面用DELPHI來說明網頁數據的收集。
首先,簡單的新聞采集
新聞采集最簡單,只要妳識別標題、副標題、作者、來源、日期、新聞主題、分頁。妳必須在采集之前獲取網頁的內容,所以在DELPHI中添加idHTTP控件(在indy Clients面板中),然後使用idHTTP1。獲取網頁內容的GET方法。聲明如下:
函數Get(AURL:string):string;超載;
AURL參數,字符串類型,指定URL地址字符串。該函數返回壹個字符串,該字符串返回網頁的HTML源文件。例如,我們可以這樣稱呼:
tmpStr:= idHTTP1。get(“”& gt;
& ltmeta name = " GENERATOR " content = " Microsoft front page 5.0 " >
& ltmeta name = " ProgId " content = " front page。Editor.Document " >
& ltmeta/test . htm’);將網頁代碼保存在strsource變量中。
然後定義strTitle,strAuthor,strCopyFrom,strContent:
strTitle:= GetStr(StrSource,' & ltp align="center " >& ltb & gt',' & lt/b & gt;& lt/p & gt;'):
strAuthor:= GetStr(StrSource,' & lttr & gt& lttd width="60% " >,' & lt/TD & gt;'):
strCopyFrom:= GetStr(StrSource,' & lttd width="40% " >,' & lt/TD & gt;& lt/tr & gt;'):
strContent:= GetStr(StrSource,' & ltp & gt& ltfont size="2 " >,' & lt/font & gt;& lt/p & gt;'):
這樣就可以將文章的標題、副標題、作者、來源、日期、內容、分頁分別存儲在上述變量中。
第二步,循環打開下壹頁,獲取內容並添加到strContent變量中。
StrSource:= idHTTP1。get(' new _ ne . ASP ');
str content:= str content+GetStr(StrSource,' & ltp & gt& ltfont size="2 " >,' & lt/font & gt;& lt/p & gt;'):
然後判斷是否有下壹頁,如果有,則獲取下壹頁的內容。
這就完成了壹個簡單的攔截過程。從上面的程序代碼可以看出,我們使用的所有攔截方法都是為了找到被攔截內容的首尾。如果有多個頭和尾呢?好像沒有辦法,只會找到第壹個,所以妳要核實壹下這個截取內容的正反面是不是只有壹個地方,再去找。
-
希望能給妳壹些幫助:)