看到有價(jià)值的鏈接,我們總想將其網(wǎng)址保存起來,以便將來訪問。用手工的方法提取網(wǎng)頁中的網(wǎng)址是一件單調(diào)乏味的事,需要反復(fù)復(fù)制、粘貼。
筆者利用VFP的低級文件函數(shù)編了一個(gè)小程序,可以快速提取HTML文件中的所有網(wǎng)址。源程序如下:
*html2url.prg
SET COMPATIBLE ON && 針對FSIZE():ON返回文件大小 OFF返回字段大小
SourceFileName=′c:\tszz\shtml.htm′
&&源文件名
TargetFileName=′c:\tszz\turl.htm′
&&目標(biāo)文件名
IF FILE(SourceFileName) && 文件存在嗎?
nUrlFile=FSIZE(SourceFileName)
&& 返回文件大小,64KB
UrlFile = FOPEN(SourceFileName,12)
ContentUrlFile=FREAD(UrlFile,nUrlFile)
&& 返回文件內(nèi)容
ELSE
WAIT ′源文件不存在′ WINDOW NOWAIT
ENDIF
NewUrlFile = FCREATE(TargetFileName)
str1=ContentUrlFile && 源文件內(nèi)容串
str2=′′ && 目標(biāo)文件內(nèi)容串
centi=INT(NUrlFile/100)
i=1
FOR i=1 TO nUrlFile &&在源文件中由文件頭至文件尾進(jìn)行搜索
IF INT(i/centi)=i/centi THEN
WAIT ′請稍候!正在轉(zhuǎn)換...,已完成′+ALLTRIM(STR(ROUND(i/nUrlFile*100,0)))+′%′ WINDOW NOWAIT
ENDIF
IF SUBSTR(str1,i,2)=′〈A′ OR SUBSTR(str1,i,2)=′〈a′ THEN
j=i+1
DO WHILE SUBSTR (str1,j,4)〈〉′〈/A〉′ AND SUBSTR (str1,j,4)〈〉′〈/a〉′
j=j+1
ENDDO
str2=str2+SUBSTR(str1,i,j-i+4)+′〈br〉′+CHR(13)+CHR(10)
ENDIF
NEXT
IF UrlFile 〈 0 && 檢查打開文件錯(cuò)誤
WAIT ′不能打開文件′ WINDOW NOWAIT
ELSE &&如果沒有錯(cuò)誤,關(guān)閉文件
=FCLOSE(UrlFile) && 關(guān)閉文件
ENDIF
IF NewUrlFile 〈 0 THEN
WAIT ′不能打開或創(chuàng)建輸出文件′WINDOW NOWAIT
ELSE
=FWRITE(NewUrlFile,str2)
&&寫目標(biāo)文件
=FCLOSE(NewUrlFile)
ENDIF
RETURN
筆者利用VFP的低級文件函數(shù)編了一個(gè)小程序,可以快速提取HTML文件中的所有網(wǎng)址。源程序如下:
*html2url.prg
SET COMPATIBLE ON && 針對FSIZE():ON返回文件大小 OFF返回字段大小
SourceFileName=′c:\tszz\shtml.htm′
&&源文件名
TargetFileName=′c:\tszz\turl.htm′
&&目標(biāo)文件名
IF FILE(SourceFileName) && 文件存在嗎?
nUrlFile=FSIZE(SourceFileName)
&& 返回文件大小,64KB
UrlFile = FOPEN(SourceFileName,12)
ContentUrlFile=FREAD(UrlFile,nUrlFile)
&& 返回文件內(nèi)容
ELSE
WAIT ′源文件不存在′ WINDOW NOWAIT
ENDIF
NewUrlFile = FCREATE(TargetFileName)
str1=ContentUrlFile && 源文件內(nèi)容串
str2=′′ && 目標(biāo)文件內(nèi)容串
centi=INT(NUrlFile/100)
i=1
FOR i=1 TO nUrlFile &&在源文件中由文件頭至文件尾進(jìn)行搜索
IF INT(i/centi)=i/centi THEN
WAIT ′請稍候!正在轉(zhuǎn)換...,已完成′+ALLTRIM(STR(ROUND(i/nUrlFile*100,0)))+′%′ WINDOW NOWAIT
ENDIF
IF SUBSTR(str1,i,2)=′〈A′ OR SUBSTR(str1,i,2)=′〈a′ THEN
j=i+1
DO WHILE SUBSTR (str1,j,4)〈〉′〈/A〉′ AND SUBSTR (str1,j,4)〈〉′〈/a〉′
j=j+1
ENDDO
str2=str2+SUBSTR(str1,i,j-i+4)+′〈br〉′+CHR(13)+CHR(10)
ENDIF
NEXT
IF UrlFile 〈 0 && 檢查打開文件錯(cuò)誤
WAIT ′不能打開文件′ WINDOW NOWAIT
ELSE &&如果沒有錯(cuò)誤,關(guān)閉文件
=FCLOSE(UrlFile) && 關(guān)閉文件
ENDIF
IF NewUrlFile 〈 0 THEN
WAIT ′不能打開或創(chuàng)建輸出文件′WINDOW NOWAIT
ELSE
=FWRITE(NewUrlFile,str2)
&&寫目標(biāo)文件
=FCLOSE(NewUrlFile)
ENDIF
RETURN