作者marcoyan (毎日とてもねたい)
看板C_Sharp
标题Re: [问题] webbrowser 存取多个网址
时间Mon Sep 27 18:39:27 2010
※ 引述《marcoyan (毎日とてもねたい)》之铭言:
: 各位先进好,小弟刚接触c#遇到了一些问题想请教各位
: 假设我有一个arrayList为myArray (里面都是存url)
: 假设myArray里的url是
: http://www.yahoo.com.tw
: http://www.google.com
: for(i=0;i<myArray.Count;i++)
: {
: string[] test = (string[])myArray[i];
: string url = test[0].Trim();
: webbrowser1.Navigate(url);
: }
: 这样它跑完yahoo的页面不会接着跑google的..
: 请问我该怎麽做它才会读完yahoo後接着读google的页面?..
: >"<
我大概说明一下我想做的事
我要读取多个页面然後将这些页面里面的资讯塞到db里
然後因为会操作到这些页面(例如修改一些资料然後submit)所以这边选择
用了webbrowser而不是webclient
我的流程大概是这样(但我不知道是否正确)
form_load之後连上一个网页,然後抓取这个页面里的某些连结(有标准用正规取得)
然後塞到arrayList里
接着执行一只副程式
用
for(i=0;i<myArray.Count;i++)
{
取得url
string url = myArray[i]...
webbrowser1.Navigate(url);
}
然後另外在页面完成事件做我要做的事
void webBrowser1_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
这边做抓取网页资料,然後写入DB
接着修改表单资料然後送出submit
}
但我发现这样很会漏掉,例如我可能有10个url,但是它前2-3个都没处理
然後後面的会处理 = =.... why...
documentcomplete不就是读取完时处理吗...
还是我的做法有误之类的,我有试着在documentCompeted里放eventDo但也是一样
因为我观念上是觉得,每个动作跑完才会继续下一个
但c#它似乎不是这样.. (我本来是写php的,没有winform,所以可能认知有问题)
跪求先进指教.........鞭用力点迷关系...Orz
--
相信,用心就能够看见。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.2.112
1F:→ james732:或许你可以把切换页面的工作移到 DocumentCompleted 最後 09/27 18:41
※ 编辑: marcoyan 来自: 114.32.2.112 (09/27 18:42)
2F:→ james732:确保抓取资料与submit都完成了,再载入下一个页面 09/27 18:41
3F:→ marcoyan:感谢j大指点.T_T.. 10/11 12:27