网页抓取的问题,aspx页面,post翻页

huoguofenren 2011-10-19 02:47:20
页面地址:
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方法对应的参数");
括号里的中文提示是什么意思啊?抓狂了快!
...全文
416 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
地菜 2011-10-20
  • 打赏
  • 举报
回复
不光光post 这几个 参数 还有重要的参数 比如 当前页码 ,页大小,等等
漏掉一个都可能造成抓取失败

你可以用 firebug 监控下 post请求表单都 发送了哪些内容,然后自己模仿表单 发送post请求
on1y_1onely 2011-10-20
  • 打赏
  • 举报
回复
你录制一下报头看看...录制报头简单的方法就是用httpwatch professional看看
on1y_1onely 2011-10-20
  • 打赏
  • 举报
回复
你录制一下报头看看...录制报头简单的方法就是用httpwatch professional看看
huoguofenren 2011-10-20
  • 打赏
  • 举报
回复
有没有人知道怎么弄啊?
huoguofenren 2011-10-20
  • 打赏
  • 举报
回复
有没有人知道怎么弄啊?
huoguofenren 2011-10-19
  • 打赏
  • 举报
回复
PostVars.Add("__VIEWSTATE", "此处是您需要提前得到的信息");

PostVars.Add("__EVENTVALIDATION", "此处是您需要提前得到的信息");

PostVars.Add("__EVENTTARGET", "此处是__dopostback方法对应的参数");

PostVars.Add("__EVENTARGUMENT", "此处是__dopostback方法对应的参数");
这些我弄明白了,已经使用这段代码得到了另一个aspx页面的信息,但是我要求助的这个网站还是不行,
http://journals.lww.com/anesthesiology/toc/2011/01000 这个页面的翻页好像更复杂一些
huoguofenren 2011-10-19
  • 打赏
  • 举报
回复
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)
地菜 2011-10-19
  • 打赏
  • 举报
回复

__VIEWSTATE、__EVENTVALIDATION、__EVENTTARGET、__EVENTARGUMENT 这几个参数应该都可以在
页面http://journals.lww.com/anesthesiology/toc/2011/01000的网页源文件中找到

你要做的就是 get请求地址http://journals.lww.com/anesthesiology/toc/2011/01000 ,从返回的源文件中
拿到这些个参数 , 再发送请求去获取第二页
huoguofenren 2011-10-19
  • 打赏
  • 举报
回复
怎么还没有回复啊
huoguofenren 2011-10-19
  • 打赏
  • 举报
回复
有没有人回答啊,在线等~

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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