一个网页是图表构成:具体为:
<table width="417" border="1">
<tr>
<td width="84">列1</td>
<td width="107">列2</td>
<td width="204">列3</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>aa</td>
<td>bb</td>
<td>cc</td>
</tr>
</table>
如何能取出该值对应插入表中呢?
首先源文件可以取得,请教如何解析!
<table width="417" border="1">
<tr>
<td width="84">列1</td>
<td width="107">列2</td>
<td width="204">列3</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>aa</td>
<td>bb</td>
<td>cc</td>
</tr>
</table>
如何能取出该值对应插入表中呢?
首先源文件可以取得,请教如何解析!
<table width="417" border="1">
<tr>
<td width="84">列1</td>
<td width="107">列2</td>
<td width="204">列3</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>aa</td>
<td>bb</td>
<td>cc</td>
</tr>
</table>
如何能取出该值对应插入表中呢?
首先源文件可以取得,请教如何解析!
1、如果网页是在你自己开发的浏览器里显示,那么可以直接取到iwebbrowser2对象的句柄,并从而取得IHtmlDocument2对象,这样就可以得到整个网页的所有细节数据。再然后就是看你怎么编程取各个节点数据了。
2、如果是IE的其他浏览器,就要想办法拿到iwebbrowser2对象的句柄,后续处理跟1是一样的。
3、如果能直接取到源文件的话,那就干脆把它看作一个XML,然后进行XML解析。
var
I,j,k:Integer;
s:string;
vHTMLElement,ihe1,ihetds:IHTMLElement;
vHTMLAnchorElement:IHTMLAnchorElement;
tbl,th,td:IHTMLElementCollection ;
txt:Textfile;
tb:TTabSheet;
ietmp:TWebBrowser;
begin with (ie.Document as IHTMLDocument2).body.all as
IHTMLElementCollection do
for I := 0 to length - 1 do
begin
//with item(I, I) as IHTMLElement, item(I, I) as IHTMLAnchorElement do
vHTMLElement := item(I, I) as IHTMLElement ;
// with do
//vHTMLElement.title
{
if System.Length(string(vHTMLElement.innerText))>300 then
begin
memo3.lines.add(inttostr(i)+' '+inttostr(System.Length(string(vHTMLElement.innerText)))+' '+inttostr(system.length(vHTMLElement.innerHTML))+'================');
memo3.Lines.Add(vHTMLElement.tagName+' {t: '+ vHTMLElement.title+'{ '+vHTMLElement.innerText+' {h:'+vHTMLElement.innerHTML ) ;
memo3.lines.add('~~~~~~~~~~~~``');
end;
}
if LowerCase( vHTMLElement.tagName )='table' then
begin // memo4.Lines.Add(format('tag:%9s ol:%4d,ot:%4d,oh:%4d,ow:%4d',[vHTMLElement.tagName,vHTMLElement.offsetLeft,vHTMLElement.offsetTop,vHTMLElement.offsetHeight,vHTMLElement.offsetWidth])) ;
// vHTMLElement.all
//memo4.lines.add(inttostr(i)+' '+inttostr(System.Length(string(vHTMLElement.innerText)))+' '+inttostr(system.length(vHTMLElement.innerHTML))+'================'); tbl := (vHTMLElement.all ) as IHTMLElementCollection;
mmTblAly.Lines.Add(format('table %d =========',[tbl.length]));
for j:=0 to tbl.length-1 do
begin
ihe1 := tbl.item(j,j) as IHTMLElement ; // mmTblAly.lines.add(inttostr(i)+' '+inttostr(System.Length(string(ihe1.innerText)))+' '+inttostr(system.length(ihe1.innerHTML))+'================');
mmTblAly.Lines.Add(ihe1.tagName+'{t: '+ ihe1.title+'----');
mmtblaly.lines.add('');
mmtblaly.lines.Add('--------inntrtex------') ;
mmtblaly.lines.add('');
mmTblAly.Lines.Add(ihe1.innerText);
mmtblaly.lines.add('');
mmtblaly.lines.Add('--------innerHTML------') ;
mmtblaly.lines.add('');
mmtblaly.Lines.add(ihe1.innerHTML ) ;
mmtblaly.lines.add(''); end;
memo4.Lines.Add(inttostr(length));
end;
// memo4.Lines.Add(vHTMLElement.tagName+' {t: '+ vHTMLElement.title+'{ '+vHTMLElement.innerText+' {h:'+vHTMLElement.innerHTML ) ;
// memo4.lines.add('~~~~~~~~~~~~``');
end;
// SameText(href, 'http://www.csdn.net/') then click;end;用 TWebBrowser 打开网网页,先找 table
找到talbe后找 tr 这就是行,再找tb 字段了
分析那些是数据那些上标头