看板 C_Sharp 關於我們 聯絡資訊
我想用C#的webBrowser控制項 寫一個可以整理拍賣網站物品價格的程式 我想到的程式流程大概是這樣的 進入全部商品的目錄頁第一頁 ↓ 進入每一個產品的頁面 並parse網頁的HTML記錄下產品名稱和價錢 ↓ 到下一頁目錄頁進行同樣的步驟直到目錄到底了為止 我目前先以e松青的網站做測試 http://tw.mall.yahoo.com/search?m=list&view=image&sid=e_matsusei 底下是我的程式碼,關於webbrowser控制項的部分 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //這裡是第一個目錄頁打開後做的事情 //doc就是htmldocument物件 HtmlDocument doc = webBrowser1.Document; for (int j = 0; j < doc.All.Count; j++) { //get URL if (doc.All[j].TagName.ToLower().Equals("h3")) { //因為他們商品的連結都用H3標籤包著所以先找H3標籤 string title_tmp; HtmlElement button; title_tmp = doc.All[j].InnerHtml; if (title_tmp.Contains("href=\"http://tw.page.mall.yahoo.com/item/")) { //從連結網址內容判斷這個H3標籤是不是商品連結 button = doc.All[j].GetElementsByTagName("a")[0]; button.InvokeMember("click"); /*Parse網頁並且紀錄商品價錢的code*/ webBrowser1.GoBack(); } } } writer.Close(); } private void button1_Click(object sender, EventArgs e) { //我設了一個按鈕按下去之後才會啟動webbrowser控制項 webBrowser1.Navigate("http://tw.mall.yahoo.com/search?m=list&view=image&sid=e_matsusei&b=" + Convert.ToChar(i) + "&s=-starttime"); i = i + 48; } 目前出現的第一個問題是在黃色的部分 原本我預想出現的結果是網頁跑出來後進入第一個商品 接下來跳出來進入第二個商品 接下來跳出來進入第三個商品...etc MSDN上說用這個GoBack就是有相當於瀏覽器的「上一頁」的功能 但是我使用之後卻沒有正常運作 網頁沒有回到上一頁,一直停在商品頁面 另外第二個出現的問題是綠色的部分 因為好像沒辦法把Navigate那行直接放到for迴圈裡面跑 所以我設計了一個按鈕來啟動webbrowser的功能 並且在結束時將預設為0的變數i(我宣告在Form的那層)加大48 因為在e松青的目錄上換頁時網址上的那個變數b是一次加48 我預期的結果是,第一次點了按鈕後就可以看到目錄的第一頁 接下來因為i加大了48,第二次點擊按鈕就會看到網頁的第二頁 點第三次就會看到第三頁... 但是我點很多次卻依然只有停留在第一頁 看起來很像是i因為某種原因沒有加大 現在感到有些困惑,希望板上的前輩能夠不吝告訴小弟這隻程式的問題所在 以及該如何達到我想要的效果 在這邊先感謝各位的回覆 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.9.18 ※ 編輯: hcl012 來自: 111.248.9.18 (08/03 01:20)
optimist9266:有一種東西叫做HttpWebRequest 08/04 02:14