作者hcl012 (怪龙-卡西欧鲁)
看板C_Sharp
标题[问题] 关於webBrowser控制项
时间Wed Aug 3 01:19:02 2011
我想用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)
1F:→ optimist9266:有一种东西叫做HttpWebRequest 08/04 02:14