页面地址:
http://journals.lww.com/anesthesiology/toc/2011/01000
这个好像还不是__doPostBack(eventTarget, eventArgument),而是这么一堆乱起八糟的javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions("ctl00$SPWebPartManager1$g_d5feef41_4555_489e_8dcb_6455ffa4a6f0$_ffffe3392d7fda1a$topPager$nextLink",%20"",%20true,%20"",%20"",%20false,%20true))
哪位大侠知道怎么让他翻页吗?
我在网上搜索到这个方法:
for (int i = 0; i < 1000; i++)            {                System.Net.WebClient WebClientObj = new System.Net.WebClient();                System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();                PostVars.Add("__VIEWSTATE", "此处是您需要提前得到的信息");                PostVars.Add("__EVENTVALIDATION", "此处是您需要提前得到的信息");                PostVars.Add("__EVENTTARGET", "此处是__dopostback方法对应的参数");                PostVars.Add("__EVENTARGUMENT", "此处是__dopostback方法对应的参数");                WebClientObj.Headers.Add("ContentType", "application/x-www-form-urlencoded");                try                {                    byte[] byte1 = WebClientObj.UploadValues("http://www.xxxx.cn/messagelist.aspx", "POST", PostVars);                    string ResponseStr = Encoding.UTF8.GetString(byte1); //得到当前页面对应的html 文本字符串                    GetPostValue(ResponseStr);//得到当前页面对应的 __VIEWSTATE 等上面需要的信息,为抓取下一页面使用                    SaveMessage(ResponseStr);//保存自己关心的内容到数据库中                }                catch (Exception ex)                {                    Console.WriteLine(ex.Message);                }            }
但是: PostVars.Add("__VIEWSTATE", "此处是您需要提前得到的信息");                PostVars.Add("__EVENTVALIDATION", "此处是您需要提前得到的信息");                PostVars.Add("__EVENTTARGET", "此处是__dopostback方法对应的参数");                PostVars.Add("__EVENTARGUMENT", "此处是__dopostback方法对应的参数");
括号里的中文提示是什么意思啊?抓狂了快!

解决方案 »

  1.   


    __VIEWSTATE、__EVENTVALIDATION、__EVENTTARGET、__EVENTARGUMENT 这几个参数应该都可以在
    页面http://journals.lww.com/anesthesiology/toc/2011/01000的网页源文件中找到你要做的就是 get请求地址http://journals.lww.com/anesthesiology/toc/2011/01000 ,从返回的源文件中
    拿到这些个参数 , 再发送请求去获取第二页
      

  2.   

    PostVars.Add("__VIEWSTATE", strViewState);                PostVars.Add("__EVENTVALIDATION", strEventValidation);                PostVars.Add("__EVENTTARGET", strEventTargetParam);//触发换页的控件 id                PostVars.Add("__EVENTARGUMENT", "2");
    我得到页面内容后,抓取到__VIEWSTATE,__EVENTVALIDATION后还是不行啊,而且把鼠标放在翻页按钮上,显示的链接是:javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions("ctl00$SPWebPartManager1$g_d5feef41_4555_489e_8dcb_6455ffa4a6f0$_ffffe3392d7fda1a$topPager$nextLink",%20"",%20true,%20"",%20"",%20false,%20true))
    还不是__doPostBack(eventTarget, eventArgument)
      

  3.   

    PostVars.Add("__VIEWSTATE", "此处是您需要提前得到的信息");  PostVars.Add("__EVENTVALIDATION", "此处是您需要提前得到的信息");  PostVars.Add("__EVENTTARGET", "此处是__dopostback方法对应的参数");  PostVars.Add("__EVENTARGUMENT", "此处是__dopostback方法对应的参数");
    这些我弄明白了,已经使用这段代码得到了另一个aspx页面的信息,但是我要求助的这个网站还是不行,
    http://journals.lww.com/anesthesiology/toc/2011/01000    这个页面的翻页好像更复杂一些
      

  4.   

    你录制一下报头看看...录制报头简单的方法就是用httpwatch professional看看
      

  5.   

    你录制一下报头看看...录制报头简单的方法就是用httpwatch professional看看
      

  6.   

    不光光post 这几个 参数 还有重要的参数 比如 当前页码 ,页大小,等等
    漏掉一个都可能造成抓取失败 你可以用 firebug 监控下 post请求表单都 发送了哪些内容,然后自己模仿表单 发送post请求