Re: [問題] webbrowser 存取多個網址

看板C_Sharp作者 (毎日とてもねたい)時間13年前 (2010/09/27 18:39), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《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

09/27 18:41, , 1F
或許你可以把切換頁面的工作移到 DocumentCompleted 最後
09/27 18:41, 1F
※ 編輯: marcoyan 來自: 114.32.2.112 (09/27 18:42)

09/27 18:41, , 2F
確保抓取資料與submit都完成了,再載入下一個頁面
09/27 18:41, 2F

10/11 12:27, , 3F
感謝j大指點.T_T..
10/11 12:27, 3F
文章代碼(AID): #1Ce7HY35 (C_Sharp)
文章代碼(AID): #1Ce7HY35 (C_Sharp)