火车头如何采集ajax数据和百度站内搜索数据

 火车头采集器   高蒙   阅读(4014)   评论(0)   2015-11-25 22:55:29    火车头 火车头采集器 


 项目中遇到需要采集某个网站的数据,经过查看发现它用的是百度的站内搜索技术。站内搜索,采用的是ajax的技术,通过请求获取百度返回的json字符串,写入到页面中的。随后尝试了许多的方法,去采集他的数据,都是失败了。

 

于是,我就上百度去搜索了一下,都是一些泛泛之谈,没有实际的用处。最后,想想还是自己去研究吧。

在我不断的努力和找人咨询的情况下,终于,得到了下面的教程《火车头采集ajax数据 》。

 

第一步:分析

 

上面说了,百度的站内搜索返回的是json字符串,那么只要我们找到这个发送请求的地址,接收返回的值,对值进行处理就可以了。

 

第二步:获取请求的参数值

 

为了得到返回的json值,我们要找到提交的地址。在这里,可能有很多小伙伴想到了,火狐的firebug。我也尝试了,可是没有得到我想要的信息。

于是,我就在网上下载了一个抓包工具,Fiddler软件。百度软件库里就有。下载之后,打开软件,在浏览器搜索框中,输入你要搜索的内容。【回车】之后,你在fiddler里面查看,获取的数据。如下图:

 

003ujUM9gy6WW72335q04&amp.jpg

 

第三步:分析抓包工具返回的数据。

 

003ujUM9gy6WW72335q04&amp.jpg

 

1) 图中标记1的区域,是我们发现的百度站内搜索的地址。

2) 图中标记2的区域,是我们获取到的地址链接里面的所有参数。

3) 图中标记3的区域,是我们看到的百度站内搜索返回过来的json字符串。

那么,我们想要获取的三个元素,第一,地址有了;第二,参数有了;第三,返回的json数据也有了

有了这三个必要的条件,我们只要将,需要的参数组装成自己想要的参数链接,扔给百度,我们得到想要的值就好了嘛。

 

第四步:将获取的参数,组装成想要的请求网址。我这边是用php模仿get请求的方式。下面的代码的核心地方就是,我们要模拟一个referer值,相当于百度的令牌,你要是没有的话,百度是不会把数据返回给你的。

代码如下:

 

<?php

下图中的参数,是根据实际中需要填写的,这里是最基础的代码,自行修改。

$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, &lsquo;http://www.shuchengxian.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch); 
echo $file_contents;
?>

 

003ujUM9gy6WW72335q04&amp.jpg

 

如上图所示:重要的几个参数,都标记出来了。代码上传不了,很忧伤,只能发图。

q  --->  我们搜素的关键字

cc----> 我们要采集网站的网址

p-----> 分页的代码,从0开始的。

 

第五步:我们在浏览器段,执行我们的数据。

如图所示:

 

003ujUM9gy6WW72335q04&amp.jpg

 

图中红色标记的地方,就是json字符串的字段名。现在我们值都可以获取到了,那么就把他放入火车头吧。

 

第六步:将文件放入火车头中采集。

如图:

 

003ujUM9gy6WW72335q04&amp.jpg

 

这里的添加页数的变量,可以在程序的页面,将P后面的参数,改为变量,就可以了。

 

003ujUM9gy6WW72335q04&amp.jpg

003ujUM9gy6WW72335q04&amp.jpg

 

如上图所示,我们就拿到了,我们想要采集的数据网址,然后你可以将火车头数据库中的网址,全部的提取出来,组装成链接,就可以开始采集数据了。

 

终于写完了,火车采集ajax数据,采集百度站内搜索,就是这样的。

 




相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客