请教用WebBrowser的InvokeScript方法执行翻页脚本后怎么获得翻页后的html内容?

时间:2022-11-23 10:04:25
实现的功能是想获取翻页后的html。


html中翻页部分:
<td class="textr"> 
<a class="bluelink"  href="javascript:page('1')">上一页</a> 
<a class="bluelink"  href="javascript:page('1')">[ 1 ]</a>   
<b class=org12>[ 2 ]</b>
<a class="bluelink"  href="javascript:page('3')">[ 3 ]</a>  
<a class="bluelink"  href="javascript:page('4')">[ 4 ]</a>  
<a class="bluelink"  href="javascript:page('5')">[ 5 ]</a>  
<a class="bluelink"  href="javascript:page('6')">[ 6 ]</a>  
<a class="bluelink"  href="javascript:page('7')">[ 7 ]</a>  
<a class="bluelink"  href="javascript:page('8')">[ 8 ]</a>  
<a class="bluelink"  href="javascript:page('9')">[ 9 ]</a> 
<a class="bluelink"  href="javascript:page('10')">[ 10 ]</a> 
<a class="bluelink"  href="javascript:page('3')">下一页</a>
</td>

对应的js脚本:
function page(v)
{
tryClearDefaultText(document.frmSearch.KeyWord,'test');
tryClearDefaultText(document.frmSearch.JobLocation,'test');
document.frmSearch.page.value=v;
document.frmSearch.submit()
}
form为frmSearch的部分内容
<form name="frmSearch" method="get">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="SchJobType" value="" />
<input type="hidden" name="subJobtype" value="" />
<input type="hidden" name="industry" value="计算机硬件及网络设备" />
<input type="hidden" name="PublishDate" value="" />
<input type="hidden" name="WorkingExp" value="" />
<input type="hidden" name="EduLevel" value="" />
<input type="hidden" name="CompanyType" value="" />
<input type="hidden" name="CompanySize" value="" />
<input type="hidden" name="sortby" value="" />
<input type="hidden" name="SearchModel" value="0" />
<input type="hidden" name="vip_type" value="" />
<!-- Task No: 81268 -->
<input type="hidden" name="f_kw" value="" />
<input type="hidden" name="f_rs" value="" />

代码为:
private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser web = new WebBrowser();
            webBrowser1.ObjectForScripting = this;
            web.Navigate(txtUrl.Text.Trim(), false);

            while (web.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }

            HtmlDocument doc = web.Document;


            Object[] s = new Object[1];
            s[0] = (Object)(2);
            doc.InvokeScript("page", s);

            
            web.Refresh(WebBrowserRefreshOption.Completely);
            HtmlDocument hh = web.Document;

            string sss = hh.Body.InnerHtml;
        }    

但是获取的string一直是第一页的数据。
请问怎样可以获取下页的数据?请各位达人赐教。

9 个解决方案

#1


在线等,请各位赐教

#2


顶起,等待

#3


马克

你这个难度似乎要大了,先想想

#4


感谢楼上兄弟,希望能有解决方式。继续up

#5


up

#6


无人解答

#7


我也苦苦追寻,还没找到方法

#8


执行page方法后监听document的completed事件,在事件中再获取当前HTML试试

#9


引用 8 楼 ismezy2002 的回复:
执行page方法后监听document的completed事件,在事件中再获取当前HTML试试

我觉得这方法可行。当执行了page方法后,completed事件中,通过html的document对象,可以获取整个页面的所有信息。

#1


在线等,请各位赐教

#2


顶起,等待

#3


马克

你这个难度似乎要大了,先想想

#4


感谢楼上兄弟,希望能有解决方式。继续up

#5


up

#6


无人解答

#7


我也苦苦追寻,还没找到方法

#8


执行page方法后监听document的completed事件,在事件中再获取当前HTML试试

#9


引用 8 楼 ismezy2002 的回复:
执行page方法后监听document的completed事件,在事件中再获取当前HTML试试

我觉得这方法可行。当执行了page方法后,completed事件中,通过html的document对象,可以获取整个页面的所有信息。