获取网页快照

简介: unit uWebCracker; interface uses mshtml,SHdocvw,classes,SysUtils,StrUtils; const MAXPAGECOUNT=20; type TWebPageRecord=record URL:string; Titl...

unit uWebCracker;

interface

uses mshtml,SHdocvw,classes,SysUtils,StrUtils;

const

MAXPAGECOUNT=20;

type

TWebPageRecord=record

URL:string;

Title:string;

Text:string;

end;

type

TWebCracker=class(TObject)

private

FWebPageRecordArray:array[0..MAXPAGECOUNT-1] of TWebPageRecord;

FWebPageCount:integer;

public

constructor Create;

destructor Free;

procedure SnapShot;

function GetWebText(AIndex:integer):string;

function GetWebTitle(AIndex:integer):sttring;

function GetWebURL(AIndex:integer):string;

procedure Clear;

procedure Refresh;

function GetWebPageCount:integer;

end;

implementation

constructor TWebCracker.Create;

begin

inherited Create;

FWebPageCount:=0;

end;

destructor TWebCracker.Free;

begin

clear;

inherited Free;

end;

procedure TWebCracker.SnapShot;

const

ERRORNOTLOADCOMPLETE='可能打开的网页还没有完全加载,请当所有的网页下载完后再刷新!'

var

ShellWindow:IShellWindow;

WebBrowser:IWebBrower2;

I,ShellWindowCount:integer;

HTMLDocument:IHTMLDocument2;

URL:string;

WebPageRecord:TWebPageRecord;

begin

FWebPageCount :=0;

ShellWindow:=CoShellWindow.Create;

ShellWindowCount :=ShellWindow.Create;

if ShellWindowCount>MAXPAGECOUNT then

ShellWindowCount:=MAXPAGECOUNT;

for i:=0 to ShellWindowCount-1 do

begin

WebBrowser:=ShellWindow.Item(I) as IWebBrowser2;

URL:=WebBrowser.LocationURL;

if (WebBrowser<>nil) and (not IsLocationFile(URL)) then

begin

try

HTMLDocument :=WebBrowser.Document as IHTMLDocument2;

WebPageRecord.URL :=URL;

WebPageRecord.Title :=HTMLDocument.title;

WebPageRecord.Text :=HTMLDocument.body.outerText;

FWebPageRecordArray[I] :=WebPageRecord;

Inc(FWebPageCount);

except

on Exception do

raise Exception.Create(ERRORNOTLOADCOMPLETE);

end;

end;

ShellWindow :=nil;

end;

end;

function TWebCracker.GetWebText(AIndex:integer):string;

begin

Result :=FWebPageRecordArray[AIndex].Text;

end;

function TWebCracker.GetWebTitle(AIndex:integer):string;

begin

Result :=FWebPageRecordArray[AIndex].Title;

end;

function TWebCracker.GetWebURL(AIndex:integer):string;

begin

Result :=FWebPageRecordArray[AIndex].URL;

end;

procedureTWebCracker.Clear;

begin

FWebPageCount :=0;

end;

procedureTWebCracker.Refresh;

begin

self.Snapshot;

end;

functionTWebCracker.GetWebPageCount:integer;

begin

Result :=FWebPageCount;

end;

相关文章
|
7月前
|
Python
用Python实现批量下载文件
用Python实现批量下载文件
|
7月前
|
数据采集 前端开发 JavaScript
Python爬虫零基础到爬啥都行
Python爬虫项目实战全程实录,你想要什么数据能随意的爬,不管抓多少数据几分钟就能爬到你的硬盘,需要会基本的前端技术(HTML、CSS、JAVASCRIPT)和LINUX、MYSQL、REDIS基础。
48 1
Python爬虫零基础到爬啥都行
|
Web App开发
Chrome浏览器与迅雷协同批量下载网页内全部链接的方法
本文介绍在Chrome浏览器中,通过迅雷自动批量选中网页中全部下载链接并进行下载的方法~
1137 1
Chrome浏览器与迅雷协同批量下载网页内全部链接的方法
|
存储 搜索推荐 Android开发
一键网页视频提取神器!!!
一键网页视频提取神器!!!
|
编译器 C++
C++ 抓取和批量下载网站上的图片或文件
C++ 抓取和批量下载网站上的图片或文件
359 0
vba 在网页中抓取指定内容
vba 在网页中抓取指定内容
95 0
|
数据采集 Web App开发 iOS开发
Python爬虫-爬取贴吧中每个帖子内的楼主图片
1.根据输入的关键字筛选贴吧 2.获得贴吧内的帖子,支持分页爬取 3.爬取并下载帖子内仅和楼主相关的图片
2744 0
|
数据采集 Python
Python网络爬虫之爬取百思不得姐视频并保存至文件
项目说明 使用Python写网络爬虫之爬取百思不得姐视频并保存至文件示例 使用工具 Python2.7.X、pycharm 使用方法 在pycharm中创建一个爬取百思不得姐视频.
1734 0