→ optimist9266:有一種東西叫做HttpWebRequest 08/04 02:14
我想用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)