抓取文章

<% @LANGUAGE="JSCRIPT" CODEPAGE="936" %>
<!--  METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library"
TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}" 
-->
<%
 
//打开数据库
 try
 {
  var strConnectionString 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("#db.mdb");
  var objConnection 
= Server.CreateObject("ADODB.Connection");
  objConnection.Open(strConnectionString);
 }
 catch(e)
 {
  Response.Write(e.description);
  Response.End();
 }
%>

< script  language ="jscript"  runat ="server" >
//远程获取数据

function GetData()
{
 
var xHttp = new ActiveXObject("microsoft.xmlhttp");
 xHttp.open(
"POST","http://www.chinamp.org/mppro2.php",false);
 xHttp.send();
 
return(xHttp.responseText);
}


//利用正则表达式提取符合条件的链接

function GetLinks(str)
{
 
var re = new RegExp("<a[^<>]+?>((.| )*?)</a>""gi");
 
var a = str.match(re); //第一次搜索 for(var i=0;i<a.length;i++)
 {
  
var t1,t2;
  
var temp;
  
var r = /qy.php?id=(d+)/ig; 

  
if(!r.test(a[i]))continue;
  temp 
= a[i].match(/qy.php?id=(d+)/ig);
  t1 
= RegExp.$1;
  temp 
= a[i].match(/<font[^<>]+?color="#000000">(.*?)</font>/ig);
  t2 = RegExp.$1;
  if(t1 == t2)continue;
  SaveArticle(t1,t2,GetContent(t1));
 }
}

//通过提取的链接获取ID,并通过这个ID取抓取相应的文章

function GetContent(id)
{
 var xHttp = new ActiveXObject(
"microsoft.xmlhttp");
 xHttp.open(
"POST","http://www.chinamp.org/qy.php?id=" + id,false);
 xHttp.send();
 
var str = xHttp.responseText;
 
var re = new RegExp("<span[^<>]+?style="font-size:10.8pt">(.*?)</span>""gi");
 
var a = str.match(re);
 
return(RegExp.$1);
}


//入库

function SaveArticle(oldID,Title,Content)
{
 
var oRst = Server.CreateObject("ADODB.Recordset");
 
var sQuery;
 sQuery 
= "SELECT oldID,Title,Content FROM Articles"
 oRst.Open(sQuery,objConnection,adOpenStatic,adLockPessimistic);
 oRst.AddNew();
 oRst(
"oldID"= oldID;
 oRst(
"Title"= Title;
 oRst(
"Content"= Content;
 oRst.Update();
 oRst.Close();
 Response.Write(Title 
+ "抓取成功" + "<br/>");
}


</ script >
< HTML >
< HEAD >
< TITLE >  抓取文章 </ TITLE >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312" ></ HEAD >
< BODY >
<% = GetLinks(GetData()) %>
</ BODY >

</ HTML >
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值