获取知乎的话题数据,js写的,但偶尔还是被知乎服务器拦截掉。。。
获取知乎的话题数据,js写的,但偶尔还是被知乎服务器拦截掉。。。
By shiqiren
at 2015-08-11
1人收藏 • 3236人看过
var topicArr=new Array(); function GetZhihuData(childID,parentId){ $.post("http://www.zhihu.com/topic/"+parentId+"/organize/entire?child="+childID+"&parent="+parentId, function(data) { var result=JSON.parse(data); var childData=result['msg']; for(var i=0;i<childData.length;i++){ GetData(childData[i],parentId); } }); } function GetData(childData,parentId){ if(childData.length==0) return; if(childData[0]==="topic"){ var id=childData[2]; var title=childData[1]; if(typeof topicArr[id] !='undefined') return; topicArr[id]=true; console.log("insert into carbon_dict (id,title,parentId) values('"+id+"','"+title+"','"+parentId+"')"); } else if(childData[0]==="load"){ var nextChild=childData[2]; var nextParent=childData[3]; GetZhihuData(nextChild,nextParent); } else{ for(var i=0;i<childData.length;i++){ GetData(childData[i],parentId); } } } console.log('start'); GetZhihuData('','19776749');//跟话题
- 登录后方可回帖
11 个回复 | 最后更新于 2015-08-13
被拦截应该是JavaScript的跨域处理机制,这部分属于跨域脚本,除非知乎那边做特别设置,不然一般情况都是不可运行的。
我找了篇文章是介绍这个的:http://blog.jobbole.com/53487/
要运行,可以关闭浏览器的跨域安全机制,例如Chrome运行时加入如下参数:
1 | --disable-web-security |
或者在知乎下打开F12,直接粘贴执行。
另外用JavaScript跑这个,还真是卡啊……
以前我调用Wiki的数据,用VB、PHP、Python都写过,这些才是比较合适的工具吧。
回复#1 @lincanbin :
我是直接用chrome打开知乎,然后在控制台执行的
回复#4 @shiqiren :
好卡,有最终的SQL文件吗?
回复#5 @lincanbin :
数据不齐啊,我等会用c#写个
回复#6 @shiqiren :
这种多半会封IP吧,如果不封那知乎也做得挺随意。
回复#7 @lincanbin :
改改改
回复#8 @shiqiren :
你手脚真快
回复#8 @shiqiren :
你这是要把论坛,改成问答的额