求助!WebBrowser如何获取网页数据?

cdminer 2015-01-31 10:38:18
private void button1_Click(object sender, EventArgs e)
{
web.Navigate("http://odds.500.com/fenxi1/ouzhi_same.php?cid=293&win=2.05&draw=3.10&lost=3.60&fixtureid=437662");
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
}
void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string BrowserUrl = web.Url.ToString();
if (String.IsNullOrEmpty(BrowserUrl)) //检查未赋值或空值
return;
if (BrowserUrl.Equals("about:blank")) //是否为空白页
return;
if (web.ReadyState != WebBrowserReadyState.Complete) //状态为完成
return;
if (e.Url.ToString() != BrowserUrl) //检查事件url和webBrowser的url
return;
if (web.DocumentText == "")
return;
HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("table");
foreach (HtmlElement item in ElementCollection)
{
System.Diagnostics.Debug.WriteLine(item.InnerText);
}
}

我想获取这个网页里的历史赔率数据,但是用这个代码获取不到,哪里有问题?请高手赐教,谢谢!
...全文
325 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdminer 2015-02-04
  • 打赏
  • 举报
回复
引用 6 楼 wyd1520 的回复:

 ie.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);

 void ie_DocumentComplete(object pDisp, ref object URL)
        {
            if (ie.ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE )
            {
                  xxxxx
            }

        }


这种方法还是不行,我还是用笨方法解决吧。
本拉灯 2015-02-01
  • 打赏
  • 举报
回复
引用 3 楼 cdminer 的回复:
我查看了一下,本应该出现数据的地方截获的数据是 "赛事比赛日期对阵胜负初盘终盘详细 数据加载中,请稍候...." 应该是网页数据没有加载完成,就开始抓取了,现在问题就是怎么判断网页加载完成? 用 web.ReadyState != WebBrowserReadyState.Complete 判断无效?
NET 自带的那个WebBrowser 对于js 请求的数据会是不会触发DocumentCompleted事件,他只会争对当前页面加载触发 要用SHDocVw.dll组件 这里面的axWebBrowser才会
cdminer 2015-02-01
  • 打赏
  • 举报
回复
我查看了一下,本应该出现数据的地方截获的数据是 "赛事比赛日期对阵胜负初盘终盘详细 数据加载中,请稍候...." 应该是网页数据没有加载完成,就开始抓取了,现在问题就是怎么判断网页加载完成? 用 web.ReadyState != WebBrowserReadyState.Complete 判断无效?
本拉灯 2015-02-01
  • 打赏
  • 举报
回复

 ie.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);

 void ie_DocumentComplete(object pDisp, ref object URL)
        {
            if (ie.ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE )
            {
                  xxxxx
            }

        }


cdminer 2015-02-01
  • 打赏
  • 举报
回复
引用 4 楼 wyd1520 的回复:
[quote=引用 3 楼 cdminer 的回复:] 我查看了一下,本应该出现数据的地方截获的数据是 "赛事比赛日期对阵胜负初盘终盘详细 数据加载中,请稍候...." 应该是网页数据没有加载完成,就开始抓取了,现在问题就是怎么判断网页加载完成? 用 web.ReadyState != WebBrowserReadyState.Complete 判断无效?
NET 自带的那个WebBrowser 对于js 请求的数据会是不会触发DocumentCompleted事件,他只会争对当前页面加载触发 要用SHDocVw.dll组件 这里面的axWebBrowser才会[/quote] 有代码可以参考吗?
本拉灯 2015-01-31
  • 打赏
  • 举报
回复
那数据是JS AJAX取过来的吧,你用WebBrowser取不到那个不会在里面产生内容。
lovezhizi 2015-01-31
  • 打赏
  • 举报
回复
使用谷歌浏览器,点中那个页面元素,右键审查元素,看看这个table是不是再iframe里,是的话还得获取ifarme 转成document,再查

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧