小马哥, 怎么解析ajax命令~ 给我们讲讲呗.举个例子:抓取的目标页面只有一个div. 一个script标签,src了一个js文件,此js文件经过代码混淆了.js文件中ajax请求了一个url.返回是结果填充到div中. 这个页面通过浏览器看是正常的, 但是, 你能通过php给我抓到通过浏览器看到的效果么? 也就是你所谓的抓取ajax...还有, 楼主的这个实现真赞~~ 前几天我还研究stream_select来着, 结果没弄明白都... 膜拜下楼主..-------------------- 原始邮件 ------------------发件人: "青蛙王子"<6589...@qq.com>;发送时间: 2013年3月15日(星期五) 中午12:56收件人: "thinkinlamp"<think...@googlegroups.com>;主题: 回复: 回复:[thinkinlamp] 纯 PHP 实现并支持 Keep-Alive 和并行抓取的 HttpClient.class.php完全可以实现。-------------------- 原始邮件 ------------------发件人: "小马xiaoma"<cnxi...@gmail.com>;发送时间: 2013年3月15日(星期五) 中午12:48收件人: "thinkinlamp"<think...@googlegroups.com>;主题: Re: 回复:[thinkinlamp] 纯 PHP 实现并支持 Keep-Alive 和并行抓取的 HttpClient.class.php可能的,没啥不可能,只要解析ajax命令,ajax也是通过http在客户端去抓取的。在 2013年3月15日下午12:10,潘钜添 Firzen <firz...@gmail.com>写道:
抓取ajax生成的内容?这个不可能吧2013/3/15 青蛙王子 <6589...@qq.com>很可惜,不能抓取js生成的内容,ajax。。。。。。因此,废弃。------------------ 原始邮件 ------------------发件人: "maminglian";发送时间: 2013年3月15日(星期五) 上午10:50收件人: "thinkinlamp";主题: [thinkinlamp] 纯 PHP 实现并支持 Keep-Alive 和并行抓取的 HttpClient.class.php前段时间有抓取数据的需求,考虑到驻留长时抓取的性能需求,不可能一次一个 file_get_congents 调用,即便使用 curl 扩展可以解决并行抓取,但似乎也无法发挥出 Keep-Alive 的优势(即一次连接,多次请求)。因此使用纯 PHP 代码开发了这个类库,是一个比较完整的 Http 客户端,主要特色:* 1) 纯 PHP 代码实现,无需依赖任何扩展* 2) 允许设置各种 HTTP 头,完整的支持 Cookie* 3) 支持 301/302 重定向识别,可设置最多跳转的次数* 4) 支持 Keep-Alive 连接,重用于同一主机下的其它请求* 5) 支持 https 访问(需要 PHP 开启 ssl 扩展)* 6) 支持 POST 表单的文件上传* 7) 支持同时并行处理多个请求其中TCP连接采用异步方式,并行处理采用 stream_select() 多路IO轮循实现,也支持回调函数处理HTTP响应结果。简要示范:(粘自github的README,不知能否正确显示)require 'HttpClient.class.php'; function test_cb($res, $req, $key) { echo '[' . $key . '] url: ' . $req->getUrl() . ', '; echo 'time cost: ' . $res->timeCost . ', size: ' . number_format(strlen($res->body)) . "\n"; } $http = new HttpClient('test_cb'); // 全部 URL 抓取完毕时一并返回,传入单个 URL 或数组组成的多个 URL // 第一次请求可能因为域名解析等原因较慢,可以自行构造 HttpRequest 直接用 IP请求更快 $results = $http->get(array( 'baidu' => 'http://www.baidu.com/', 'sina' => 'http://news.sina.com.cn/', 'google' => 'http://www.google.com.sg/', 'qq' => 'http://www.qq.com/', )); // 键名不变,值为 HttpResponse 对象 //print_r($results);注意:您可以通过 HttpClient::debug('open'); 会详细打印很多信息。
--
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp+unsubscribe@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp...@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp...@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp...@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp...@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
ThinkingInLAMP邮件组使用说明:http://blog.thinkinlamp.com/?p=758
---
您收到此邮件是因为您订阅了 Google 网上论坛的“thinkinlamp”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 thinkinlamp...@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。