一直習慣於用:Twebbrowser來下載網頁后提取指定標籤的文本或值,但前兩天有貼問及不讓顯示網頁,直接提取指定標籤值的問題,原貼地址:http://topic.csdn.net/u/20100520/00/96ede01f-ea84-44ed-aed5-38e189548114.html?38369 自己就研究下,通過IHTMLDocument2接口直接取得IHtmlElementCollection,再提取指定標籤的文本。方法後面再說 本貼主要目地是希望Delphi的高手們請各位高手來出出招,分享一些經驗和代碼,
就以 http://www.163.com首頁例,如何不像twerbbrowser一樣show網頁,以盡可能少的內存,和盡可能少的臨時文件來取得它的源代碼。(具體指定標籤的內容以后再開貼) 最重要的要有代碼哦!讓大家都可以分析代碼所產生的直接效果,而不僅僅是幾句大概思路
先對未來關注此問題的高手們致敬!致謝!
就以 http://www.163.com首頁例,如何不像twerbbrowser一樣show網頁,以盡可能少的內存,和盡可能少的臨時文件來取得它的源代碼。(具體指定標籤的內容以后再開貼) 最重要的要有代碼哦!讓大家都可以分析代碼所產生的直接效果,而不僅僅是幾句大概思路
先對未來關注此問題的高手們致敬!致謝!
能分享一些 SOCKET取源代码 的具體代碼嗎?
可以使用CoXMLHTTPRequest创建,我都用这个,或者使用
CreateOLEObject('WinHttp.WinHttpRequest.5.1');
var
in_star, in_end: integer;
begin
in_star := AnsiPos(strbegin, strsource) + length(strbegin);
in_end := AnsiPos(strend, strsource);
Result := copy(strsource, in_star, in_end - in_star);
end;//信息列表点击procedure TForm1.btn1Click(Sender: TObject);
const
url = 'http://www.xxx.com';
var
req: IXMLHTTPRequest;
StrStream: TStringStream;
SetNoteStr: string;
begin
//利用 IXMLHTTPRequest 获取网页源代码,在调用函数GetStr截取需要的代码
req := CoXMLHTTPRequest.Create;
req.open('Get', url, False, EmptyParam, EmptyParam);
req.send(EmptyParam);
SetNoteStr := GetStr(req.responseText, '</script></center>', 'document.body.oncopy=function');//获取标签直接的代码
StrStream := TStringStream.Create(SetNoteStr);
try
StrStream.Position := 0;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));//直接写入WebBrowser
finally
StrStream.Free;
end;