一个小问题:如何把一个人的所有微博下载回来?

有几个方式是容易想到的:

1 一个一个链接另存为,用迅雷不行,没有身份验证信息
2 用php的curl写一个登录程序,自动登录,自动访问抓取,如果不能自动登录,则白费
3 建立一个代理服务器,按规则保留访问过的内容,自动打开要采集的一系列网页,稍微复杂了些
4 给页面添加脚本,执行脚本抓取,ajax功能很好用,jquery还顺便分析了内容,比php分析要简单
5 通过api访问

拿新浪微博为例,所有的方式都可行:

第一个是简单些,有人力又不嫌麻烦那就挺好。
第二个规则变化比较多,登录过程跳来跳去,跟着做也是没有问题的,况且登录流程没有验证,倒是可行的。
第三个要比较熟悉服务器规则才行,不太好实施。
第四个如果熟悉脚本,那不妨试试了,有跨域的问题,数据提交比较麻烦些。
第五个受api限制,比如只能读取200条。

阿权想说的是第四个,这个方式很有趣:

1 往页面添加脚本,改变页面的行为,也就是说你可以做任何一个事情,比如你在网页里面发出一个ajax请求下载同域名下的数据,这个很容易理解。
2 下载完成后,分析页面数据,jquery很方便
3 get方式传递出去你要的信息,这个不需要ajax也可以,比如放一个img什么的

这个最好的方式是 firefox加上Greasemonkey了,对页面新建一个脚本,然后就基本随便你操作了,比如:

var rnd = Math.random();

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.aslibra.com/path/to/jquery.js?v='+rnd;
head.appendChild(script);

var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.aslibra.com/path/to/my.js?v='+rnd;
head.appendChild(script2);


my.js里面就是看你想做什么了,那可就是在当前域名下的操作了


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: , , ,
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐