本帖最后由 junhongbill 于 2014-10-22 15:13:29 编辑

解决方案 »

  1.   

    要分析脚本 获取真实数据url,或者用iframe 获取iframe内的数据
      

  2.   

    url是真实的,直接用$.open()方法没有问题。
    但是用get方法的时候就只能得到模板HTML,得不到js生成的数据部分
      

  3.   

    也就是说必须自己分析生成数据的那个js?
    那是个大型的专利服务网站……会很花时间的
    我不需要多么高的运行效率,只要能简单粗暴的把开个新页面所能获得的dom拿到手就行了。
      

  4.   

    js生成的数据也是由服务器获取的,找出数据的地址
    也就是说必须自己分析生成数据的那个js?
    那是个大型的专利服务网站……会很花时间的
    我不需要多么高的运行效率,只要能简单粗暴的把开个新页面所能获得的dom拿到手就行了。 
      

  5.   

    用webbrowser 或iframe等页面加载完再获取
      

  6.   


    $('iframe').ready(function () {
      $('iframe').html(function(i,origText) {
        console.log(origText);
      });
    });我在构建了多个iframe之后加入了这段代码,但是打印的都是“”。
    这是怎么回事?不是已经写了ready了吗?
      

  7.   

    这个有点难度,难点在于,如果某些数据需要网页的行为(事件)触发ajax抓取,你仅仅打开是不够的。
      

  8.   

    是啊,除非我去认真读网站的js,不然天知道是哪个事件触发的。
    又没有模拟浏览器的“打开”行为的功能
    还是iframe比较靠谱,问题是为什么我对iframe节点用html()方法只能得到空值?
    代码贴在你楼上了
      

  9.   


    $('iframe').ready(function () {
      $('iframe').html(function(i,origText) {
        console.log(origText);
      });
    });我在构建了多个iframe之后加入了这段代码,但是打印的都是“”。
    这是怎么回事?不是已经写了ready了吗?
    $($(iframe)[0].contentWindow.document.body).html()
      

  10.   


    $('iframe').ready(function () {
      $('iframe').html(function(i,origText) {
        console.log(origText);
      });
    });我在构建了多个iframe之后加入了这段代码,但是打印的都是“”。
    这是怎么回事?不是已经写了ready了吗?
    $($(iframe)[0].contentWindow.document.body).html()
    现在的问题是无法捕获“真正的”页面加载完成信息。
    用这个代码可以捕获全部的信息:
    window.setTimeout(function  () {
        $('iframe').each(function() {
        console.log($(this.contentDocument.body).html());
    });
    },10000)但是用load来判断就只能得到没数据的模板网页:$(document).ready(function ($) {
        $('iframe').load(function() {
        console.log($(this.contentDocument.body).html());
        });
    });load不是只有在载入完成以后才会被触发吗?为什么这里还是不可以呢?