美文网首页
AJAX-POST请求的数据,抓取生成CSV

AJAX-POST请求的数据,抓取生成CSV

作者: si钱 | 来源:发表于2017-05-10 01:03 被阅读0次

前因:项目需要采集N*NNNN组数据。但是该网页是使用AJAX,POST请求获取得到数据的。一般通常GET请求的就用火车头一类的解决的,但是免费版本不能使用ajax获取方式。又懒得写Python(其实是环境没装)。只能靠万能的JS来解决了。

适用人群:会写点小JS,又懒得用Python,想二分钟就搞定的。要是没装油猴子就十分钟吧。。反正超快解决问题。

步骤:

1. 写一段AJAX获取数据。其实不用,页面上就有请求的代码,copy妥妥的

2. 使用油猴子(Tampermonkey)。一个用户脚本管理器插件。安装之后,可自动为您访问的网站添加功能。比如百度网盘破解啦,视频网站去广告破解VIP啦都可以。这里就不赘述了。

直接把post获取数据代码放到油猴子里新建的脚本中

3. 使用FileSaver.js插件实现文件保存功能

油猴子支持引用外部js  

 @require http://www.jq22.com/demo/FileSaver20161213/FileSaver.min.js

类似这样的。。。

代码中在得到返回数据后保存的代码,类似

var BB = self.Blob;

// csv中列项用逗号分隔,行项用\n分隔,这里只是意思意思,实际一般是在post请求后得到返回的list数据后循环赋值。

var str=result.rows[i].timeHour + ","+result.rows[i].uuid+","+result.rows[i].customerId+","+result.rows[i].ip+ ","+result.rows[i].pageUrl +  "\n";

// 使用 Blob 和FileSaver保存CSV文件。

saveAs( new BB( ["\ufeff" + str], {type: 'text/csv;charset=utf8'} ) , "demo.csv" );

结果:基本上在油猴子上运行后,就能得到1个或者多个csv文件了。

谁说js不能导出文件的,嘿嘿嘿。

由于实际采集一个小小的栗子:

// @name        获得天天果园某个商品评论

// @namespace    http://tampermonkey.net/

// @version      0.1

// @description  try to take over the world!

// @match        http://www.fruitday.com/prodetail/index/16987

// @grant        none

// @require http://www.jq22.com/demo/FileSaver20161213/FileSaver.min.js

// ==/UserScript==

/* jshint -W097 */

'use strict';

// Your code here...

var curr_page=0;

var str="";

var getComment = function(cpage){

$.post('http://www.fruitday.com/ajax/comment/pList',{id:16987,curr_page:cpage,type:""},

function(result)

{

result=JSON.parse(result);

var rlist=result.msg.list;

for(var i=0;i

var rlist=result.msg.list;

for(var i=0;i<=rlist.length;i++){

str+= rlist[i].id+ ","+ rlist[i].content+","+ rlist[i].time+ ","+ rlist[i].star +  "\n";

}

curr_page++;

if( curr_page==200){

$('body').html(str);

var BB = self.Blob;

saveAs( new BB( ["\ufeff" + str], {type: 'text/csv;charset=utf8'} ) , "天天果园评论demo.csv" );

}else{

getComment(curr_page);

}

}

)

};

$(function(){

$('body').html("正在进行中....");

getComment(curr_page);

})

获取的就是天天果园某个商品的评论,大概2000千吧。

到了excel就可以做点小小小小的分析了。

相关文章

网友评论

      本文标题:AJAX-POST请求的数据,抓取生成CSV

      本文链接:https://www.haomeiwen.com/subject/dbtwtxtx.html