liuwenxi 发表于 2010-11-24 09:03:45

哪位高人能帮我找到这个页面的网址

http://www.gzaic.gov.cn/gsbm/FrmRegOpeninfoDetail.aspx
以上页面,输入“2010-11-19”,点击“查询”。
可是找不到网址,采不到数据。
请高人指点迷津!不胜感激!

专业收费采集 发表于 2010-11-24 09:21:46

用POST抓取数据吧

liuwenxi 发表于 2010-11-24 09:36:26

没有啊,post里面也是始终同一个网址,就是说任何一天的都是相同的。这种情况有碰上过吗?用什么技术处理啊?求教了

zjyk1984 发表于 2010-11-24 11:43:39

使用POST方式获取分页,查看POST的数据

zhouchanglin 发表于 2010-11-24 12:49:16

这个网站没有分页,可以把日期当分页来采,这是抓到的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" />
                  &nbsp;&nbsp;
                </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]
查看完整版本: 哪位高人能帮我找到这个页面的网址