免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 45691 | 回复: 2
打印 上一主题 下一主题

PHP使用curl对ajax型的网页数据进行抓取 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-07 14:41 |只看该作者 |倒序浏览
PHP使用curl对ajax型的网页数据进行抓取








最近安排新来的同事写爬虫抓站,咨询我如何对ajax型的网页数据进行抓取。比如http://www.chewen.com这个站点,“更多新问题”就是发送的ajax请求。
其实抓ajax的页面和抓普通的页面区别不大。ajax只不过是做了一次异步的http请求,只要使用firebug类似的工具,找到请求的后端服务url和传值的参数,然后对该url传递参数进行抓取即可。利用firebug的网络工具,如图所示:



下面代码就是以车问网站为例,通过curl发送POST请求,获取一页的数据。(其实该url的数据可以直接通过GET获取)

Php代码
  1. 1.<?php   
  2. 2.$opt = "http://www.chewen.com/proc/ajax/getHomeNewQuestion_ajax.jsp";   
  3. 3.$post = "lastqid=50934&pgno=1&pagenum=20";   
  4. 4.$curl = curl_init();   
  5. 5.curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);   
  6. 6.curl_setopt($curl, CURLOPT_POST, 1);   
  7. 7.curl_setopt($curl, CURLOPT_POSTFIELDS, $post);   
  8. 8.curl_setopt($curl, CURLOPT_URL, $opt);   
  9. 9.$rs = curl_exec($curl);   
  10. 10.$rs = json_decode($rs);   
  11. 11.var_dump($rs);   
  12. 12.?>  
  13. <?php
  14. $opt = "http://www.chewen.com/proc/ajax/getHomeNewQuestion_ajax.jsp";
  15. $post = "lastqid=50934&pgno=1&pagenum=20";
  16. $curl = curl_init();
  17. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  18. curl_setopt($curl, CURLOPT_POST, 1);
  19. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  20. curl_setopt($curl, CURLOPT_URL, $opt);
  21. $rs = curl_exec($curl);
  22. $rs = json_decode($rs);
  23. var_dump($rs);
  24. ?>
复制代码
每次只需要更改参数pgno就相当于更改了分页的页码,然后再经行处理就与抓普通的列表页无异了。

1.jpg (75 KB, 下载次数: 91)

1.jpg

论坛徽章:
0
2 [报告]
发表于 2011-12-20 13:52 |只看该作者
希望于楼主多多交流哦

论坛徽章:
0
3 [报告]
发表于 2014-04-22 17:39 |只看该作者
我怎么看不懂啊,怎样分页抓http://www.310win.com/leitai/fangan.html网站的内容啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP