JS数据采集框架 – 采集所有hao123的网址

前几天写过一篇JS数据采集框架:(http://www.miaoqiyuan.cn/p/js-collect)。写完后就一直没维护,今天朋友问用法,我们就以hao123.com为例,获取下他所有的收录的链接地址。

为了方便获取,我们用一个脚本实现。首先判断下,如果没有分类页库(已经预留公共变量G),则需要采集分类页地址。如果已经有分类页库,则依次打开,并采集网址。一切都在一个浏览器窗口中执行,无需下载任何软件。就是这么神奇~~~~

分析下分类页,他的所有分类页面都是http://www.hao123.com/开头,结尾没有.htm。

非常幸运的是hao123使用了JQuery,用它的选择器和遍历省了我们很多代码。

//(function(){document.writeln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>JS Test</title><style type="text/css">textarea,iframe{width:1001px;display:block} textarea{height:200px;} iframe{height:600px;}</style><script type="text/javascript">var $,G={};function mqycn_callback(d){eval("$=window.frames[0];" + document.getElementsByTagName("textarea")[0].value);}</script></head><body><iframe onload="mqycn_callback(this.document);" src="' + (location.href.indexOf('?') != -1?location.href + '&reload':location.href + '?reload') + '"></iframe><textarea></textarea><textarea></textarea></body></html>');})(); 
//Author:苗启源(miaoqiyuan.cn)
if(typeof(G.Res) != "object"){
  G.ID=0;
  G.Res = new Array();
  $.$("a").each(function(){if(this.href.substr(0,22) == "http://www.hao123.com/" && this.href.indexOf(".htm") == -1){G.Res.push(this.href);}});
  if(G.Res.length>1){
    document.getElementsByTagName("iframe")[0].src = G.Res[0];
  }else{
  	alert("ok");
  }
}else{
  if(!!$.$){
    t = '';
    a = $.$(".mod-content");
    for(i=0;i<a.length;i++){
      t += '\n\n' + $.$(a[i]).find(".content-title").text() + "\n";
      l = $.$(a[i]).find("a").each(function(){
        t += this.href + "\t" + this.innerText + "\n";
      });
    }
    document.getElementsByTagName("textarea")[1].value += t;
  }
  if(++G.ID < G.Res.length){
    document.getElementsByTagName("iframe")[0].src = G.Res[G.ID];
  }else{
    alert("ok");
  }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.