关于网页分析。。。。 ( 积分: 100 )

H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
就是用IE的接口:IHTMLTable、IHTMLTable2、IHTMLTableCell

怎么用啊。。。弄的我头晕 MSDN看不懂。。偶英语太差
GOOGLE里关于使用的文章基本没有。。偶尔有1、2篇相关的还是C写的,不懂。。。

或者不用这个。。反正就是分析一段HTML的表格代码

<TABLE borderColor=#60a1c8 cellSpacing=0 borderColorDark=#ffffff cellPadding=6 width=599 border=1 rlight="#99CC99">
<TR>
<TD align=middle width="13%"> </TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月26日  星期三</b></font></TD> <TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月27日  星期四</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月28日  星期五</b></font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>天气</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>阴 转 小雨</font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>阴 转 晴</font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>晴</font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>风向</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>微风</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>北风</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>微风 </font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>风力</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><3级</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>4-5级</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><3级</font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>温度</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>17℃ — 10℃</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>18℃ — 6℃</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>15℃ — 5℃</font></TD> </TR>
</TABLE>
</td>

气象预报的东西 。。。。怎么分别取得每一天的天气、风向、风力、温度,也就是读这个table每个cell里的内容

当然 拆字符串也行。。。不过我是没想到怎么搞。。。。最好还是用IE的接口来做
 
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
就是用IE的接口:IHTMLTable、IHTMLTable2、IHTMLTableCell

怎么用啊。。。弄的我头晕 MSDN看不懂。。偶英语太差
GOOGLE里关于使用的文章基本没有。。偶尔有1、2篇相关的还是C写的,不懂。。。

或者不用这个。。反正就是分析一段HTML的表格代码

<TABLE borderColor=#60a1c8 cellSpacing=0 borderColorDark=#ffffff cellPadding=6 width=599 border=1 rlight="#99CC99">
<TR>
<TD align=middle width="13%"> </TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月26日  星期三</b></font></TD> <TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月27日  星期四</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><b>10月28日  星期五</b></font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>天气</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>阴 转 小雨</font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>阴 转 晴</font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>晴</font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>风向</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>微风</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>北风</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>微风 </font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>风力</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><3级</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>4-5级</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e><3级</font></TD> </TR>
<TR>
<TD align=middle width="13%"><FONT style="FONT-SIZE: 12px; LINE-HEIGHT: 12pt" color=#23437e><b>温度</b></font></TD>
<TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>17℃ — 10℃</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>18℃ — 6℃</font></TD><TD align=middle width=29%><FONT style=FONT-SIZE: 12px; LINE-HEIGHT: 12pt color=#23437e>15℃ — 5℃</font></TD> </TR>
</TABLE>
</td>

气象预报的东西 。。。。怎么分别取得每一天的天气、风向、风力、温度,也就是读这个table每个cell里的内容

当然 拆字符串也行。。。不过我是没想到怎么搞。。。。最好还是用IE的接口来做
 

风铃夜思雨

Unregistered / Unconfirmed
GUEST, unregistred user!
不难啊。。。
刚才随便弄的,乱乱的
procedure TForm1.Button1Click(Sender: TObject);
var
aa:HTMLTableCaption;
doc: IHTMLDocument2;
all: IHTMLElementCollection;
i: integer;
Disp: IDispatch;
begin
doc := WebBrowser1.Document as IHTMLDocument2;
all:= doc.all;
for i := 0 to all.length - 1 do
begin
Disp := all.item(i, 0);
if (SUCCEEDED(Disp.QueryInterface(HTMLTableCaption, aa)) ) then
listbox1.Items.Add(aa.innerText);
end;
end;
 
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
这个 。。。你试了没
确实能把每个都分出来。。不过 。。。-_-! 好象多了不少的样子

我看到的是每个都得到了3次,而且还有一排的也算一个得到了。。。-_-! 我只要每个cell的东西。。
下面是我按你的代码得到的东西。。

10月26日 星期三10月27日 星期四10月28日 星期五
天气小雨 转 阴多云 转 晴晴
风向北风北风微风
风力<3级 转 3-4级4-5级 转 3-4级<3级
温度11℃ — 17℃7℃ — 16℃2℃ — 17℃
10月26日 星期三10月27日 星期四10月28日 星期五
天气小雨 转 阴多云 转 晴晴
风向北风北风微风
风力<3级 转 3-4级4-5级 转 3-4级<3级
温度11℃ — 17℃7℃ — 16℃2℃ — 17℃
10月26日 星期三10月27日 星期四10月28日 星期五

10月26日 星期三
10月26日 星期三
10月26日 星期三
10月27日 星期四
10月27日 星期四
10月27日 星期四
10月28日 星期五
10月28日 星期五
10月28日 星期五
天气小雨 转 阴多云 转 晴晴
天气
天气
天气
小雨 转 阴
小雨 转 阴
多云 转 晴
多云 转 晴


风向北风北风微风
风向
风向
风向
北风
北风
北风
北风
微风
微风
风力<3级 转 3-4级4-5级 转 3-4级<3级
风力
风力
风力
<3级 转 3-4级
<3级 转 3-4级
4-5级 转 3-4级
4-5级 转 3-4级
<3级
<3级
温度11℃ — 17℃7℃ — 16℃2℃ — 17℃
温度
温度
温度
11℃ — 17℃
11℃ — 17℃
7℃ — 16℃
7℃ — 16℃
2℃ — 17℃
2℃ — 17℃

而我想得到的是下面这样的。。。。
10月26日 星期三
10月27日 星期四
10月28日 星期五
天气
小雨 转 阴
多云 转 晴

风向
北风
北风
微风
风力
<3级 转 3-4级
4-5级 转 3-4级
<3级
温度
11℃ — 17℃
7℃ — 16℃
2℃ — 17℃


应该是标签嵌套的原因吧。。。可是在all里怎么判断是哪种类型呢? 我不太会哦。。
 

风铃夜思雨

Unregistered / Unconfirmed
GUEST, unregistred user!
我只是随便弄弄的,置于想正确,换HTMLTableCaption为其它的,方法就给你了
 
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
哎呀 别啊 其他那几个我都试了 都是得到那一堆东西啊

嘿嘿 帮帮忙嘛~~~留个联系方式
QQ:17948876
MSN:hs_kill_god@hotmail.com
 
R

rebirth

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题回答的很棒了。
楼主应该自己多思考思考。

我这么坦白会不会挨骂啊。呵呵。。
 
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
挨骂? 给我个骂的理由先

我对这个还不太明白啊,当然分肯定是给他了,不够可以再加
我现在主要的疑问:

for i := 0 to all.length - 1 do
begin
Disp := all.item(i, 0);
if (SUCCEEDED(Disp.QueryInterface(HTMLTableCaption, aa)) ) then
listbox1.Items.Add(aa.innerText);
end;

这个,也就是说把document里所有的元素都认为是HTMLTableCaption?
这是只能针对这一个网页 ,如过是个完整的网页,里面有很多元素呢?
怎么区分这些元素是Table或者是其他的??
 
R

rebirth

Unregistered / Unconfirmed
GUEST, unregistred user!
doc := WebBrowser1.Document as IHTMLDocument2;
all:= doc.all;
for i := 0 to all.length - 1 do // 遍历所有的document里的对象
begin
Disp := all.item(i, 0); // 当前的对象(Document里的
if (SUCCEEDED(Disp.QueryInterface(HTMLTableCaption, aa)) ) then // 确认是 HTMLTableCaption 类型,并付值给 aa
// 如果你要处理特殊情况,可以直接对上面这句话进行修改,也许可以检测AA的某些属性
// 也许你可以想办法(打印)显示调试信息的地方,获取更多关于AA的信息
// 也可以在这里设置断点,在调试环境下,看看AA都包涵了哪些东西!
listbox1.Items.Add(aa.innerText); // 获取
end;
 

风铃夜思雨

Unregistered / Unconfirmed
GUEST, unregistred user!
楼上的解释得很对,由于TABLE处理起来要用几个对象。。所以我也只能做个简单的样式。
可以先取TABLE,再从TABLE中取CELL。。
 
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
-_-!。。。。。。。。。。哎

我自己再看看吧。。。接口的东西就是麻烦
 

Similar threads

I
回复
0
查看
667
import
I
I
回复
0
查看
719
import
I
I
回复
0
查看
564
import
I
I
回复
0
查看
579
import
I
I
回复
0
查看
723
import
I
顶部