仓酷云

标题: PHP网页设计若何利用PHP办事端代办署理抓取网页内容 [打印本页]

作者: 活着的死人    时间: 2015-2-3 23:44
标题: PHP网页设计若何利用PHP办事端代办署理抓取网页内容
PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。比来公司临时断开外网,只开放公司本人一切的站点答应会见,说其实的,做WEB开辟的断网,真是让人啼笑皆非......   因为需求查找材料,只好复杂写了一个PHP的办事端代办署理页面来用一下!
复杂框架页面:
  以下为援用的内容:
<style type="text/css">
*{margin:0;padding:0;}
html,body{overflow:hidden;}
td{padding:0;vertical-align:top;}
</style>
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td style="height:25px;background:#d4d0c8;padding:5px 10px;">
<form method="post" action="action_get.php" target="actioncontent" style="margin:0;padding:0;">
<input type="text" id="targeturl" name="targeturl" style="width:100%;border:1px inset;margin:0;" />
</form>
</td>
</tr>
<tr>
<td>
<iframe name="actioncontent" style="width:100%;height:100%;"></iframe>
</td>
</tr>
</table>
<script type="text/javascript">
window.onload = function(){
  document.getElementById('targeturl').focus();
};
</script>

PHP代办署理页面:
  以下为援用的内容:
<?php
//利用Snoopy的抓页功效
include "Snoopy.class.php";
//方针URL
$url = $_REQUEST['targeturl'];
//将一切传递过去的参数列出来
$par = array();
$GetPost = array_merge($_POST,$_GET);
foreach($GetPost As $Key=>$Value){
  if($Key!='targeturl'){
   $Value = str_replace("%25","%",$Value);
   array_push($par,($Key . "=" . $Value));
  }
}
//判别方针URL是不是带有?(便是否带有参数)
$cc = strpos($url,"?") ? "&" : "?";
//重组URL
$geturl = !$par ? $url : $url.$cc.implode("&",$par);
//抓取重组后的URL页面内容
$snoopy = new Snoopy;
$snoopy->fetch($geturl);
//交换方针内容中剧本里有能够交换父窗口地址的代码
$org = str_replace("top.location","top.title",$snoopy->results);
//测验考试转换方针内容编码到UTF-8
$opt = iconv("gbk","utf-8",$org);
//判别方针内容编码为GBK或UTF-8
$ec = strlen($opt)?"gbk":"utf-8";
?>
<script type="text/javascript">
//关闭运转,防止与前面内容中剧本凌乱
(function(){
var easyUTF8 = function(gbk){if(!gbk){return '';}var utf8 = [];for(var i=0;i<gbk.length;i++){var s_str = gbk.charAt(i);if(!(/^%u/i.test(escape(s_str)))){utf8.push(s_str);continue;}var s_char = gbk.charCodeAt(i);var b_char = s_char.toString(2).split('');var c_char = (b_char.length==15)?[0].concat(b_char):b_char;var a_b =[];a_b[0] = '1110'+c_char.splice(0,4).join('');a_b[1] = '10'+c_char.splice(0,6).join('');a_b[2] = '10'+c_char.splice(0,6).join('');for(var n=0;n<a_b.length;n++){utf8.push('%'+parseInt(a_b[n],2).toString(16).toUpperCase());}}return utf8.join('');};
var getArgs = function(surl){var sarg = surl.split('?'),rv={};rv.filename=sarg[0];if(!sarg[1]){return rv;}var aarg=sarg[1].split('&'),atmp=[];for(var i=0;i<aarg.length;i++){atmp=aarg.split('=');rv[atmp[0]]=atmp[1];}return rv;};
var createIPH = function(name,value){if(!name){return;}if(/msie/i.test(navigator.appVersion)){return document.createElement('<input type="hidden" name="'+name+'" value="'+value+'"/>');}else{var dfi = document.createElement('input');dfi.type = 'hidden';dfi.name = name;dfi.value = value;return dfi;}};
//回显方针URL到父窗口文本框
var dtu = top.document.getElementById('targeturl');
if(dtu){dtu.value = '<?php echo $geturl;?>';}
//方针URL及domain
var sref = '<?php echo $url;?>';
var sdomain = sref.match(/^http:\/\/[^\/]*/i)[0];
//页面加载后履行上面的进程
var process = function(){
  //抓取页面中一切链接
  var dlink = document.getElementsByTagName('a'),la = dlink.length;
  //抓取页面中一切表单
  var dform = document.getElementsByTagName('form'),lf = dform.length;
  //遍历一切链接,交换它们的href地址
  for(var i=0;i<la;i++){
  var src = dlink.href.toString().replace(/^http:\/\/www\.w3cgroup\.com(?:\/geturl)?/i,sdomain);
  var oargs = getArgs(src),ahref = [];
  //UTF-8编码参数值
  for(var d in oargs){
   if(!dd=='filename'!oargs[d]){continue;}
   ahref.push(d+'='+encodeURIComponent(easyUTF8(oargs[d])));
  }
  var ghref = ahref.length?oargs.filename+'?'+ahref.join('&'):oargs.filename;
  //重设链接地址
  dlink.href = 'http://www.w3cgroup.com/geturl/action_get.php?targeturl='+ghref;
  }
  //遍历一切表单,交换它们的action地址
  for(i=0;i<lf;i++){
  //抓取表单action并处置
  var src = dform.action.toString().replace(/^http:\/\/www\.w3cgroup\.com(?:\/geturl)?/i,sdomain);
  if(!(/^http/.test(src))){src = (/^\/.*$/.test(src))?(sdomain+src):(sdomain+'/'+src);}
  //创立一个埋没域targeturl,值为下面处置的src地址
  var dfi = createIPH('targeturl',src);
  dform.appendChild(dfi);
  //创立一个埋没域ie,值为utf-8,纯属为搜刮引擎利用
  var dfi2 = createIPH('ie','utf-8');
  dform.appendChild(dfi2);
  //重设表单提交方针窗口
  dform.target = 'actioncontent';
  //重设表单action地址
  dform.action = 'http://www.w3cgroup.com/geturl/action_get.php';
  //重设表单onsubmit事务,用来UTF8编码字段值
  dform.onsubmit = function(){
   var dlms = this.elements,l = dlms.length-1,pn = '',pt = '',pv = '';
   for(var i=0;i<l;i++){
    pn = dlms.name,pt = dlms.type,pv = dlms.value;
    if(!pnpn=='targeturl'pn=='ie'){continue;}
    if(pt=='submit'pt=='reset'pt=='button'){
     dlms.value = encodeURIComponent(pv);
    }else{
     dlms.value = encodeURIComponent(easyUTF8(pv));
    }
   }
  };
  }
};
//绑定该进程到window.onload
if(document.attachEvent){window.attachEvent('onload',process);}else{window.addEventListener('load',process,false);}
})();
</script>
//剧本放在输入内容前,防止内容中能够呈现剧本毛病而招致咱们要做的工作被废失落
//输入抓到的方针页面内容
<?php echo ($ec=="gbk")?$opt:$org;?>

在这个小作品中,我编写了一个主要的JavaScript函数easyUTF8,它可以很便利地在JavaScript剧本中将GBK编码的内容转换为UTF-8编码。
咱们还处置了一下表单中添加项目标兼容成绩,注重看createIPH函数,在IE中创立的表单项内容,在指定name和value时能够会呈现咱们不但愿的了局,这在DHTML手册中已有过描写了。
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
作者: 柔情似水    时间: 2015-2-4 06:28
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 分手快乐    时间: 2015-2-9 17:39
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 莫相离    时间: 2015-2-25 15:23
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 因胸联盟    时间: 2015-3-1 20:52
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 兰色精灵    时间: 2015-3-2 21:45
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 山那边是海    时间: 2015-3-9 21:18
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 谁可相欹    时间: 2015-3-16 21:39
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: admin    时间: 2015-3-20 12:41
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 精灵巫婆    时间: 2015-3-24 16:20
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 海妖    时间: 2015-3-27 15:10
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 活着的死人    时间: 2015-4-6 00:09
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 小魔女    时间: 2015-4-8 09:52
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 飘飘悠悠    时间: 2015-4-16 21:10
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 再现理想    时间: 2015-4-21 20:42
实践是检验自己会不会的真理。
作者: 再见西城    时间: 2015-4-26 10:21
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 只想知道    时间: 2015-4-26 15:21
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 小妖女    时间: 2015-5-8 02:02
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 若相依    时间: 2015-6-4 14:16
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2