用webbrowser控件,抓取网页数据,如何抓取多个a标签对应的url地址的网页数据

tangzhaoyong 2011-05-20 04:19:05
如题所属,我页面中有四个菜单,分别连接到不同地址,我现在想通过一个按钮,抓取这个页面数据,抓取的同时,遍历获取四个a标签url地址,然后自动进入其对应的页面抓取数据,并存入数据库,现在遇到问题如下:
ArrayList UrlList = new ArrayList();
UrlList.Add("http://####/hab/gar/finallyusigarmainview.do?viewpk=");
UrlList.Add("http://####/hab/gar/finallyusigarinfoview.do?viewpk=");
UrlList.Add("http://####/hab/gar/finallyusigarclqkview.do?viewpk=");
UrlList.Add("http://####/hab/gar/finallyusigarldyjview.do?viewpk=");

string KeyValue = "aaa"
foreach (string url in UrlList)
{
string strurl = url + KeyValue;
edBrowser.Url = new Uri(strurl);
GetAirPortView(edBrowser.Document);
}
但是这样的操作,每次edBrowser对应的URL地址并没有改变,求教
...全文
308 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
遥望那些年 2011-05-20
  • 打赏
  • 举报
回复
webBrowser加载页面是要时间的,你一个页面还没加载完,foreach循环就往下跑了,当然后面的url没反应了

把foreach这个循环删掉,添加edBrowser_DocumentCompleted事件

string KeyValue = "aaa"
if(UrlList.Count>0)
{
edBrowser.Url = new Uri((string)UrlList[0]+KeyValue);
UrlList.RemoveAt(0);
edBrowser.Update();
}
Forget 2011-05-20
  • 打赏
  • 举报
回复
这个是因为,webbrowser的Navigate方法是异步执行的,也就是你循环完成了,他页面还没加载哪,可以考虑用线程同步来做。
tangzhaoyong 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gxttr 的回复:]

edBrowser.Url = new Uri(strurl);
edBrowser.Update();
[/Quote]
你的这个方法不行,还是只获取到了第一个url地址的数据,其他三个没有反应
whrspsoft3723 2011-05-20
  • 打赏
  • 举报
回复
用webrequest或webclient比较容易靠谱
遥望那些年 2011-05-20
  • 打赏
  • 举报
回复
edBrowser.Url = new Uri(strurl);
edBrowser.Update();

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧