如何抓取到Asp.Net中-doPostBack获取新页面的数据

asp.net|数据|页面

  在Web 2.0时代,很多网站采用AJAX技术实现,带来较好用户体验的代价是,javascript得到的内容搜索引擎无法爬到,Google也正在研究此种技术。本文讨论Asp.Net程序生成的链接,爬虫如何能爬进去的问题。

  问题:某网站出现的数据列表分页显示,而上一页和下一页都是用__doPostBack提交到后台处理,如javascript:__doPostBack('ucInfoListMore$gridInfoList$_ctl21$_ctl1',''),我们根本得不到他绝对链接的地址,而且每一页得下一页传入的参数是一样的。

  分析:我们首先理解__doPostBack做了哪些事情。

function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];//注意此处的FormID
} else {
theform = document.Form1;//还有此处
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}

  明白了吧,问题就在.__EVENTTARGET(后台处理的事件)和__EVENTARGUMENT上。这样就简单了,我们可以给这两个参数赋值,然后向后台发送Post就可以了。那么如何指定某一页呢,Asp.Net在后台是以Session方式保存当前页信息的,我们在Post得时候能够保证实在同一个会话中进行的就可以了。

时间: 2024-08-07 19:42:26

如何抓取到Asp.Net中-doPostBack获取新页面的数据的相关文章

java web应用中新起一个线程 在线程中怎么获取系统登录的数据

问题描述 java web应用中新起一个线程 在线程中怎么获取系统登录的数据 java web应用中新起一个线程 在线程中怎么获取系统登录的数据,系统登录用的是Spring Secrity 解决方案 可以使用缓存,自己写一个缓存类.或者使用Redis.

ASP.NET中实现获取调用方法名_实用技巧

本文实例讲述了ASP.NET中实现获取调用方法名的技巧.分享给大家供大家参考.具体实现方法如下: 在写记录日志功能时,需要记录日志调用方所在的模块名.命名空间名.类名以及方法名,想到使用的是反射(涉及到反射请注意性能),但具体是哪一块儿还不了解,于是搜索,整理如下:   需要添加相应的命名空间: 复制代码 代码如下: using System; using System.Diagnostics; using System.Reflection; 如果仅是获取当前方法名,可以使用如下代码: 复制代

ASP.NET中配合JS实现页面计时(定时)自动跳转

  这篇文章主要介绍了ASP.NET中配合JS实现页面计时(定时)自动跳转,本文主要依靠JS实现需求,只是在ASP.NET中实现而已,需要的朋友可以参考下 ASP.NET实现页面自动跳转(经测试,在VS2008 C#环境下可通过) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <%@ Page Language="C#" AutoEven

使用C++程序获取新浪行情数据的方法_C 语言

在日常开发中我们经常会使用到行情数据,很多的时候我们根据一个基准数据区构造行情,但是随着时间的推移然来构造的数据与真实行情数据之间的差距越来越大. 本问以AG1309为例子来说明,如何使用C++程序来获取新浪行情数据.(说明如果合约过期获取的数据将未空,此时请更换合约信息). 好了,在这里就不再将废话,直接给出源码供大家学习! // HttpDataTest.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include #include #incl

checkbox-action中如何获取jsp页面append出来的标签值?

问题描述 action中如何获取jsp页面append出来的标签值? if($(""#byUserId"").is("":checked"")){ $.post(""message_findUserName""{userId:$(""#userId"").val()}function(data){ for(var i =0;i $("&q

android中怎么把新增加的数据插入到adapter前面。

问题描述 android中怎么把新增加的数据插入到adapter前面. 我现在只会用..list.add(data) → adapter.notifyDataSetChanged()...把数据放在adapter的后面.. 解决方案 adapter里你肯定有传入一个数据放置载体(比方说List<>啊,String[]啊什么的),你只要把新的数据插入到那个载体的第一个,然后notify...一下就行了. 解决方案二: 因为adpater只是用来展示数据的,假设你的数据为List<>

asp.net中在用ajax格式传递数据到aspx页面时出现乱码_实用技巧

 asp.net中在用ajax格式传递数据到aspx页面时有时会出现乱码,以下为解决方法 js中 : 复制代码 代码如下: XmlHttp.open("POST", "test.aspx", false); XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); XmlHttp.send("QueryName=&qu

ASP.NET中MVC从后台控制器传递数据到前台视图的方式_实用技巧

本文实例讲述了ASP.NET中MVC从后台控制器传递数据到前台视图的方式.分享给大家供大家参考.具体分析如下: 数据存储模型Model: 复制代码 代码如下: public class CalendarEvent { public string id { get; set; } public DateTime start { get; set; } public DateTime end { get; set; } public string backgroundColor { get; set

Android编程实现获取新浪天气预报数据的方法_Android

本文实例讲述了Android编程实现获取新浪天气预报数据的方法.分享给大家供大家参考,具体如下: 新浪天气预报地址: http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0 其中,city后的城市可用java.net.URLEncoder.encode("武汉"," gb2312");也可以直接写"武汉",但不能用"wu