我不想使用twebbrowser, 任何人都知道其他metod獲取網站的標題?如何從Delphi獲取網站標題?
2
A
回答
11
您可以使用InternetOpenUrl
和InternetReadFile
函數獲取網頁的內容,然後查找<title>
標記。
查看示例應用程序。
程序GetTitleHTML;
{$APPTYPE CONSOLE}
uses
WinInet,
StrUtils,
SysUtils;
function GetHTMLTitle(const Url:string):string;
const
BuffSize = 64*1024;
TitleTagBegin='<title>';
TitleTagEnd ='</title>';
var
hInter : HINTERNET;
UrlHandle: HINTERNET;
BytesRead: Cardinal;
Buffer : Pointer;
i,f : Integer;
begin
Result:='';
hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hInter) then
begin
GetMem(Buffer,BuffSize);
try
UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD,0);
try
if Assigned(UrlHandle) then
begin
InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
if BytesRead>0 then
begin
SetString(Result, PAnsiChar(Buffer), BytesRead);
i:=Pos(TitleTagBegin,Result);
if i>0 then
begin
f:=PosEx(TitleTagEnd,Result,i+Length(TitleTagBegin));
Result:=Copy(Result,i+Length(TitleTagBegin),f-i-Length(TitleTagBegin));
end;
end;
end;
finally
InternetCloseHandle(UrlHandle);
end;
finally
FreeMem(Buffer);
end;
InternetCloseHandle(hInter);
end
end;
begin
try
Writeln(GetHTMLTitle('http://stackoverflow.com/questions/4966888/how-to-get-website-title-from-delphi'));
Writeln(GetHTMLTitle('http://www.google.com/'));
Writeln(GetHTMLTitle('http://stackoverflow.com/questions/tagged/delphi'));
Readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
0
您還可以使用Indy TIdHTTP組件,並在回答中使用與RRUZ相同的方法。
5
這完全取決於網站如何設置標題。
的<title>
標籤是不是唯一的方法,你也有JavaScript等
最好是封裝網頁在Web瀏覽器(例如在TWebBrowser
),然後從那裏搶到了冠軍。
This page有一些線索。
--jeroen
1
與厄的想法繼續,使類似的RRUZ代碼,用印(成分TidHTTP)相同的程序可以看到與此類似:
function GetHTMLTitle(const Url:string):string;
const
TitleTagBegin='<title>';
TitleTagEnd ='</title>';
var
idH:TidHTTP;
i,f:integer;
begin
idH := TidHTTP.Create();
try
Result := idH.Get(Trim(URL));
// Search theTAGS
i:=Pos(TitleTagBegin,Result);
if i>0 then begin
f:=PosEx(TitleTagEnd,Result,i+Length(TitleTagBegin));
Result:=Copy(Result,i+Length(TitleTagBegin),f-i-Length(TitleTagBegin));
end;
finally
IdH.Free;
end;
end;
問候
0
我有一個解析器(ATagParser),使這種事情微不足道。這是一個商業產品,但幾年前我就把它推出市場。我仍然積極地使用它並開發它,並將它發送給任何詢問的人。只要給予信貸,它就可以用於個人或商業用途。
BTW,發現與POS標籤的想法都很好,但它會錯過標題標籤與屬性 - 是的,標題標籤可以有屬性(DIR,郎等)
會在給出的其他選項中失敗。
相關問題
- 1. 如何從c#獲取網站標題#
- 2. 如何獲取網站的標題?
- 3. Excel VBA獲取網站標題從url
- 4. 從一個網站默默獲取網站的標題
- 5. PHP - 從用戶網站輸入獲取網站標題
- 6. 如何從網站鏈接獲取網站徽標路徑
- 7. 如何通過xpath從網站獲取標題?
- 8. 如何獲取網頁的網站名稱和頁面標題
- 9. 如何獲得網站標題?
- 10. 如何提取網站的標題?
- 11. 獲取網站標題與IP
- 12. 獲取網站標題與引入nokogiri
- 13. 獲取外部網站標題
- 14. 如何獲取網站的圖標?
- 15. 如何獲取網站的圖標?
- 16. 獲取從網站
- 17. 如何從網站上刮取徽標?
- 18. 從網站獲取body標記值
- 19. Delphi XE2 - 如何獲取指定網站的IP?
- 20. 如何從GoogleSource網站獲取android Telephony.java
- 21. 如何從網站獲取HtmlElements
- 22. 如何從外部網站獲取cookie?
- 23. 什麼,如何從網站獲取?
- 24. 如何從網站獲取鏈接
- 25. 如何從網站獲取哈希值?
- 26. 如何從Perticuler網站獲取值?
- 27. 如何從網站獲取css文件?
- 28. 如何從網站獲取句子html
- 29. 如何從網站獲取DOM數據
- 30. 如何從其他網站獲取ID?
使用Pos(Ex)進行簡單搜索可能會返回錯誤的結果,例如如果標題標籤被註釋掉。 – 2011-02-11 10:20:12
+1原生Windows API。 「我喜歡」。 (雖然`InternetCloseHandle`應該可能被包含在`finally`塊中,對吧?) – 2011-02-11 11:30:29