哪位高人能帮我找到这个页面的网址
http://www.gzaic.gov.cn/gsbm/FrmRegOpeninfoDetail.aspx以上页面,输入“2010-11-19”,点击“查询”。
可是找不到网址,采不到数据。
请高人指点迷津!不胜感激! 用POST抓取数据吧 没有啊,post里面也是始终同一个网址,就是说任何一天的都是相同的。这种情况有碰上过吗?用什么技术处理啊?求教了
使用POST方式获取分页,查看POST的数据 这个网站没有分页,可以把日期当分页来采,这是抓到的post数据:__EVENTTARGET=QueryButton&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUJNTY3MzA5NTY4D2QWAgIDD2QWBAIFDzwrAA0BAA8WBh4LXyFEYXRhQm91bmRnHglQYWdlQ291bnQCAR4LXyFJdGVtQ291bnQCAWQWAmYPZBYGZg8PZBYCHgVzdHlsZQUrYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2ltYWdlcy9saW5lX2JnMy5naWYnKWQCAQ9kFgZmD2QWAgIBDw8WAh4EVGV4dGVkZAIBD2QWAgIBDw8WAh8EZWRkAgIPZBYCAgEPDxYCHwRlZGQCAg8PFgIeB1Zpc2libGVoZGQCBw8PZA8QFgFmFgEWAh4OUGFyYW1ldGVyVmFsdWVkFgECAmRkGAEFCUdyaWRWaWV3MQ88KwAIAQNmZDOWflRU4yYlKL3bNWFmQ7JSU7ce&txtDT=2010-11-17&__EVENTVALIDATION=%2FwEWBALUl%2B5XArz7uv8PAoCn6soEAquDur4M2iDScmpNqgcNSGRiokwx4SzAqsA%3D可见txtDT=2010-11-17是关键的地方,可以把日期作为分页提交post数据,这样就可以查询整个11月的信息,查10月,改下月份就行了,不过我只是通过采网址是直接把整页的重要信息做个标签来采集,所以数据很乱
再把post数据中的随机值处理下就可以了__EVENTTARGET=QueryButton&__EVENTARGUMENT=&__VIEWSTATE=&txtDT=2010-11-[分页]&__EVENTVALIDATION=具体看规则
这些数据都是可以解释的tr>
<td class="td-left" width="13%">
请选择日期
</td>
<td class="td-main"width="25%">
<input name="txtDT" type="text" id="txtDT" value="2010-11-24" />
</td>
<td class="td-main">
<input language="javascript" onclick="if(!CheckDataSynax()) return; __doPostBack('QueryButton','')" name="QueryButton" type="button" id="QueryButton" value="查询" class="input-an" /></td>
</tr>
</table>这部分当点击查询按钮时会触发onclick="if(!CheckDataSynax()) return; __doPostBack('QueryButton','')" ,首先检查日期格式是否符合,符合进行__doPostBack函数,现在这里有2个函数,下面是他们的代码 <script language="JavaScript"type="text/javascript">
function CheckDataSynax()
{
var oElement= document.getElementById("txtDT").value;
var tmp_str = trim(oElement);
if(!strShortDateTime(tmp_str))
{
alert('日期格式不正确!(正确的日期格式:1900-1-1)');
return false;
}
else
{
return true;
}
}
</script><script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
__doPostBack函数先设置了表单__EVENTTARGET的值,这个东西是代表查询的方式把,离路有的是输入页码而有的是点击下一页提交,__doPostBack('QueryButton','')执行后,可见__EVENTTARGET=QueryButton,而__EVENTARGUMENT=空的支付;
另外__VIEWSTATE=
EVENTVALIDATION=
一大堆字符就是POST随机值,把这些必要的表单项目&连接,提交就可以了
页:
[1]