热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spider抓取动态内容(JavaScript指向的页面)

PHP新手,在写爬虫练手,一般情况下跟踪链接不是很难,但是如果是动态页面就束手无策了。也许分析协议(但是怎么分析?),模拟执行JavaScript脚本(怎么弄?),……另外可能写一个通用的爬取AJAX页面的Spider或许...
PHP新手,在写爬虫练手,一般情况下跟踪链接不是很难,但是如果是动态页面就束手无策了。

也许分析协议(但是怎么分析?),模拟执行Javascript脚本(怎么弄?),……

另外可能写一个通用的爬取AJAX页面的Spider或许是比较复杂的问题,没有听说或相关开源项目。

下面是问题描述:

比如一个页面的下一页(ajax函数中有一个得到url对应数据放到content标签部分):

Javascript: 下一页

对应的Javascript代码可能是:

function Down(index)
{
    $("#pageindex").val(parseInt(index)+1);
    ajaxpage(parseInt(index)+1);
}

function ajaxpage(index)
{
    $.ajax({
    type:"post",
    url:"class.aspx",
 data:"Option=select&cid="+$("#classid").val()+"&asc="+$("#orderselect>option:selected").val()+"&keyword="+escape($("#textfield").val())+"&PI="+index,
    success:function(data)
    {
        $("#content").html(data);
    },
    error: function(data) { 
             alert("连接超时,稍后再试!");
    }
}

ps: 我正在翻Stackoverflow,期望有进展,但是可能放在这里可能会更快得到解答。

回复内容:

PHP新手,在写爬虫练手,一般情况下跟踪链接不是很难,但是如果是动态页面就束手无策了。

也许分析协议(但是怎么分析?),模拟执行Javascript脚本(怎么弄?),……

另外可能写一个通用的爬取AJAX页面的Spider或许是比较复杂的问题,没有听说或相关开源项目。

下面是问题描述:

比如一个页面的下一页(ajax函数中有一个得到url对应数据放到content标签部分):

Javascript: 下一页

对应的Javascript代码可能是:

function Down(index)
{
    $("#pageindex").val(parseInt(index)+1);
    ajaxpage(parseInt(index)+1);
}

function ajaxpage(index)
{
    $.ajax({
    type:"post",
    url:"class.aspx",
 data:"Option=select&cid="+$("#classid").val()+"&asc="+$("#orderselect>option:selected").val()+"&keyword="+escape($("#textfield").val())+"&PI="+index,
    success:function(data)
    {
        $("#content").html(data);
    },
    error: function(data) { 
             alert("连接超时,稍后再试!");
    }
}

ps: 我正在翻Stackoverflow,期望有进展,但是可能放在这里可能会更快得到解答。

php里面没有这样的扩展(至少我还没遇到过),但是原来做java的时候有很多html引擎的实现,你可以去找一找。比如

http://lobobrowser.org/cobra.jsp

不懂PHP,一直在用java抓东西,说说我的做法。
对于ajax的请求,一般都会返回json或者xml格式的数据,打开网页的时候你可以用firebug来查看后台发送的ajax请求的格式,程序中设置请求的头信息,有的网站还需要设置COOKIE信息,不然不会返回数据,cooike的信息firebug都能查得到的。然后在发送请求,一般都会成功。
技术稍微过关的网站都会设置请求的频率限制,所以,注意发送请求的频率。

推荐阅读
  • from:http:www.myquickphp.comarchives147(请求的跨域服务器不支持常规”?”查询请求时的解决方案)昨天第一次做VIP需求时,发现一 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • Itwasworkingcorrectly,butyesterdayitstartedgiving401.IhavetriedwithGooglecontactsAPI ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • 前端图片合成技术_靠谱的前端需要做哪些准备?
    Web前端开发源于传统的互联网,互联网普及让人才需求量居高不下,随着移动互联网的高速发展,移动终端的前端开发也越来越受到重视, ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • ORACLE空间管理实验5:块管理之ASSM下高水位的影响
    数据库|mysql教程ORACLE,空间,管理,实验,ASSM,下高,水位,影响,数据库-mysql教程易语言黑客软件源码,vscode左侧搜索,ubuntu怎么看上一页,ecs搭 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • Screen对象  JS获取浏览器高度或宽度  IE中:  document.body.clientWidth>BODY对象宽度  document.body.clientHeight ... [详细]
author-avatar
漂浮胖_大卍宝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有