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

项目中遇到需要采集某个网站的数据,经过查看发现它用的是百度的站内搜索技术。站内搜索,采用的是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值,相当于百度的令牌,你要是没有的话,百度是不会把数据返回给你的。

代码如下:

 

 
  1. <?php
  2.  
  3. 下图中的参数,是根据实际中需要填写的,这里是最基础的代码,自行修改。
  4.  
  5. $ch = curl_init();
  6. $timeout = 5;
  7. curl_setopt ($ch, CURLOPT_URL, &lsquo;http://www.shuchengxian.com/');
  8. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  10. $file_contents = curl_exec($ch);
  11. curl_close($ch); 
  12. echo $file_contents;
  13. ?>

 

003ujUM9gy6WW72335q04&amp.jpg

 

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

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

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

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

 

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

如图所示:

 

003ujUM9gy6WW72335q04&amp.jpg

 

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

 

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

如图:

 

003ujUM9gy6WW72335q04&amp.jpg

 

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

 

003ujUM9gy6WW72335q04&amp.jpg

003ujUM9gy6WW72335q04&amp.jpg

 

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

 

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值