免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1171 | 回复: 0
打印 上一主题 下一主题

c# webBrowser获得网页上看到的超链接文本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-27 19:09 |只看该作者 |倒序浏览
我想在webBrowser控件的网页打开后,可以获得如图所示的超链接文本(把这个文本赋予c#里的一个变量temp) 图1:http://hiphotos.baidu.com/%C0%FA%D3%D6/pic/item/da5b8c2a2ced52d2e7cd4033.jpeg 网页:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=12214&cl=2&cm=1&sc=0&lm=-1&pn=28&rn=1&di=1533942216&ln=2000&fr= 图2:http://hiphotos.baidu.com/%C0%FA%D3%D6/pic/item/e6492b4febf5f2e2d0c86a33.jpeg 网页:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=jay+%D6%DC%BD%DC%C2%D7%D7%EE%D0%C2%CD%BC%C6%AC&in=25292&cl=2&cm=1&sc=0&lm=-1&pn=16&rn=1&di=1278940441&ln=2000&fr= 高手过来看看,一般的方法行不同。

问题补充:

第一个网页链接给错了。修改之:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=12214&cl=2&cm=1&sc=0&lm=-1&pn=28&rn=1&di=1533942216&ln=2000&fr=#pn30

最佳答案

添加COM reference, SHDocVw 及 mshtml 将webBrower1.ActiveXInstance属性 传给 SHDocvw.WebBrowser接口 使用SHDocvw.WebBrowser接口下的ProgressChange事件 在Progress.Equals(ProgressMax)时, 取 ((webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.HTMLDocumentClass).body.innerText即可 代码类似如此:
  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             SHDocVw.WebBrowser wb = webBrowser1.ActiveXInstance as SHDocVw.WebBrowser;
  4.             wb.ProgressChange += new DWebBrowserEvents2_ProgressChangeEventHandler(wb_ProgressChange);
  5.             object flags = new object(), header = new object(), postdata = new object(), framename = new object();
  6.             webBrowser1.Navigate(@"http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=31076&cl=2&cm=1&sc=0&lm=-1&pn=0&rn=1&di=503232564&ln=2000&fr=");
  7.         }

  8.         void wb_ProgressChange(int Progress, int ProgressMax)
  9.         {
  10.             if (Progress.Equals(ProgressMax))
  11.                 MessageBox.Show(((webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.HTMLDocumentClass).body.innerText);
  12.         }
触发事件你可以再看一下,可能还有更合适的。 但是Progress.Equals(ProgressMax)是最基本的 保证全部加载完毕。 还有个方法你可以自己尝试下,我觉得可以用BHO,但是不知道winform里的webbrowser对象会不会自动加载BHO,用BHO跟上边过程差不多,只是要编成COM
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP