• jquery+thinkphp实现跨域抓取数据的方法


    jquery的$.post发送数据到服务器后台,在由后台的PHP代码执行远程抓取,存到数据库ajax返回数据到前台,前台用JS接受数据并显示。

    //远程抓取获取数据
    $("#update_ac").click(function() {
    $username = $("#username").text();
    $("#AC,#rank,#Submit,#solved,#solved2,#solved3").ajaxStart(function(){
    $(this).html("<span class='loading2'>   </span>");
    });
    $.post("update_ac/username/"+$username,{},function($data){
    json = eval("(" + $data + ")");
    $("#Submit").html(json.data.Submit);
    $("#AC").html(json.data.AC);
    $("#solved,#solved2,#solved3").html(json.data.solved);
    $("#rank").html(json.data.rank);
    }
    ),"json";
    });

    上面的jquery代码还算四楼比较清楚的,纠结我的就是那个json数据的接收

    json = eval("(" + $data + ")");
    //eval() 函数可计算某个字符串,并执行其中的的 javascript 代码。

    其实这个都还是前台,跨域抓取是用php的扩展simple_html_dom完成的(不清楚的可以到网上去搜一搜,基于PHP5开发的)

    把远程的页面抓取到本地。

    import("@.ORG.simple_html_dom");
    //thinkphp内导入扩展,你要把网上下载的代码改名为simple_html_dom.class.php放到APPNAMELibORG的目录下面
    $html = file_get_html('http://openoj.awaysoft.com/JudgeOnline/userinfo.php?user='.$username); //远程抓取了
    $ret = $html->find('center',0)->plaintext; //返回数据了。

    如下所示:

    <strong><span style="font-size:18px;">/*编号=年份后两位+月份+id四位数*/ 

    $id = $this->student_model->save(0, $data); 
    $sn = date('Y', time()); 
    $sn = substr($sn, -2); 
    $sn.= date('m', time()); 
    $sn.=sprintf("%04d", $id);</span></strong> 

  • 相关阅读:
    C *p++ (*p)++ *p+=2 区别
    C 找到两字串中最长的相同串
    Jquery插件Jquerycolor
    C Fibonacci前N项和 阶乘的前N项和
    Baidu Google地图应用
    6.11Java多线程、并发、同步、synchronized方法
    6.10Java线程同步_synchronized
    6.18Java多线程并发、同步性能分析
    6.11Java多线程、并发、同步、synchronized块
    6.18Java多线程同步方法实现DemoNo2
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/6187962.html
Copyright © 2020-2023  润新知