需要分析淘宝聊天的历史记录,即要取得 (用户名,时间,内容) private string GetMsgs(IntPtr hWnd)
{
StringBuilder sb = new StringBuilder();
HTMLDocument htmlDoc = winAPI.GetHtmlDocument(hWnd);
IHTMLElementCollection msgs = htmlDoc.getElementsByTagName("DIV"); foreach (IHTMLElement msg in msgs)
{
if (msg.id == "MsgElement")
{
sb.AppendLine(msg.innerHTML);
}
} return sb.ToString();
} 以上方法为根据取得的聊天窗口句柄,返回HTMLDocument
,以上方法中的 htmlDoc.body.innerHTML 可获得如下内容:
<DIV class=Msg id=MsgElement SendID="cntaobaoautotest3"> <DIV class=MsgHead id=MsgHead><SPAN></SPAN>
<SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN> </SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight>
<SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN>
</DIV> <DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{D67154BD-076D-478D-9817-9159AC3C60AA} msgId="{D67154BD-076D-478D-9817-9159AC3C60AA}" sendId="cntaobaoautotest3">
<FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT>
</DIV>
</DIV></DIV>根据(msg.id == "MsgElement")过滤后,得到如下内容:<DIV class=MsgHead id=MsgHead><SPAN></SPAN><SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN> </SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight><SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN></DIV>
<DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{78F1A675-2D97-4D79-A697-E078614F01AC} msgId="{78F1A675-2D97-4D79-A697-E078614F01AC}" sendId="cntaobaoautotest3"><FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT></DIV></DIV>我的问题就是如何根据msg获取下一级内容(想要得到MsgHead中SenderName等),
我试 msg.document,但并不是想像中的子元素集合。
谢谢!
{
StringBuilder sb = new StringBuilder();
HTMLDocument htmlDoc = winAPI.GetHtmlDocument(hWnd);
IHTMLElementCollection msgs = htmlDoc.getElementsByTagName("DIV"); foreach (IHTMLElement msg in msgs)
{
if (msg.id == "MsgElement")
{
sb.AppendLine(msg.innerHTML);
}
} return sb.ToString();
} 以上方法为根据取得的聊天窗口句柄,返回HTMLDocument
,以上方法中的 htmlDoc.body.innerHTML 可获得如下内容:
<DIV class=Msg id=MsgElement SendID="cntaobaoautotest3"> <DIV class=MsgHead id=MsgHead><SPAN></SPAN>
<SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN> </SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight>
<SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN>
</DIV> <DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{D67154BD-076D-478D-9817-9159AC3C60AA} msgId="{D67154BD-076D-478D-9817-9159AC3C60AA}" sendId="cntaobaoautotest3">
<FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT>
</DIV>
</DIV></DIV>根据(msg.id == "MsgElement")过滤后,得到如下内容:<DIV class=MsgHead id=MsgHead><SPAN></SPAN><SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN> </SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight><SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN></DIV>
<DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{78F1A675-2D97-4D79-A697-E078614F01AC} msgId="{78F1A675-2D97-4D79-A697-E078614F01AC}" sendId="cntaobaoautotest3"><FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT></DIV></DIV>我的问题就是如何根据msg获取下一级内容(想要得到MsgHead中SenderName等),
我试 msg.document,但并不是想像中的子元素集合。
谢谢!
解决方案 »
- 半个月了都没解决的问题。求大神!
- 电脑A在广州的局域网,电脑B在上海的局域网,如何使用winsock通讯?如何得到IP和通讯端口呢?
- 1--100的自然数中,有99个在一个数组中,怎样找出不在数组中的数?
- 请问哪里有可停靠的.Net的Toolbar控件下载?
- 关于“virtual”方法及“new,override”版本协调的一些疑问,100分奉上。
- Excel能导入到datagrid中,但不知道怎么保存到Access数据库。
- 有个消息框的小问题~~~~~~~在线等着~~~~~~~~~~~~~
- datediff(M,日期时间,'2013/1/16') = 0 使用
- 如何在同一form中对同类型的不同类或结构体进行多次读写
- |||||||||| 我是人吗?||||||||||||||||
- 关闭当前的窗口
- C# 创建Access数据库问题
{
if (elem.GetAttribute("ID") == "MsgElement") { }
}
foreach (HtmlElement html in msgs)
{
if (html.GetAttribute("ID") == "MsgHead")
{
collection = html.Children;//获取id=MsgHead的子集
break;
}
}
foreach (HtmlElement html in msgs)
{
if (html.GetAttribute("ID") == "SenderName") //找到SenderName
{ }
}
是这样的,句柄返回的是mshtml命令空间中的HTMLDocument,
而不是System.Windows.Forms中的HtmlElement
即两个是不同的~~