各位前輩好 因為我想抓網頁上面多個頁面的資料 小弟本以為用迴圈連續點擊下一頁就好 但是測試後發現 每次點擊都只會到第2頁 就停止了 但是迴圈是有在計算不知道哪邊出現了問題
請各位前被提點 謝謝
private void button4_Click(object sender, EventArgs e)
{
for (int pa = 0; pa < 15; pa++)
{
HtmlElement pager = webBrowser1.Document.Window.Frames[0].Document.All["pager"];
HtmlElementCollection pagerss = pager.GetElementsByTagName("a");
foreach (HtmlElement tro in pagerss)
{
if (tro.InnerText != null)
{
if (tro.InnerText == "下一頁")
{
tro.InvokeMember("Click"); //模拟点击
break;
}
}
}
}
}
HtmlElementCollection pagerss = ager.GetElementsByTagName("a");
是
HtmlElementCollection pagerss = pager.GetElementsByTagName("a");
吧
謝謝前輩 我剛剛不小心刪到P 我的按鈕 是可以做動的 只是要我自己按 我希望的是可以點一次按鈕 他依我設定的迴圈點下一頁點到我需要的頁數
把debug斷點下在 HtmlElement pager = webBrowser1.Document.Window.Frames[0].Document.All["pager"]; 這行,不就知道click之後,第二次發生什麼了? 看一下pager物件有沒有東西~
我有下過debug斷點 也確定pager物件內是有東西 但是就是不知道為什麼 只能重第一頁到第二頁 然後就停住了 可是如果我手動點一下按鈕 是可以到第3頁的 我也有看過迴圈的變數 的確有變動 但是 網頁 止停在第2頁這邊就不會往下了
所以第二次也有執行到tro.InvokeMember("Click"); ?
有的 我有中斷在 tro.InvokeMember("Click"); 我有確認 他的確有進入這行
看來要試了才知道,網址?
111
頁面載入需要時間吧,
你應該要等畫面Load完畢了,
再做點擊的動作吧,
我猜是不是這個問題...
我剛剛也有想到 只是不知道要如何設計 頁面載入需要時間
這一篇 寫得還不錯,
我之前也是看這個學的,
不過要仔細看跟實作才會懂,
針對你的問題,
重點在這裡
private void webBrowser1_DocumentCompleted
跟
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
可以做成一個Function,Function中載入完畢再呼叫Function。
謝謝小魚大 我今天也有用過if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) 這段程式碼 可能我沒弄懂 所以當下 沒有動作 我會再試試 所以這段程式碼 對iframe的框架也是有用是嘛
我之前測試,
webBrowser遇到iframe可能會抓不到資料,
不知道你的需求是什麼?
小魚大 這是一個北京賽車的網站 需要進去到裡面抓取他的歷史資料來做統計