欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

用ASP實現遠程抓取網頁到本地數據庫

  • 發布于:2021-01-29
  • 249 人圍觀
 接到一個任務是把中國名牌網站的某些內容添加到我們的網站上,這些網站上有些頁面是文章鏈接列表,點擊鏈接會出現文章的詳細內容顯示頁,根據這個規律,結合正則表達式,XMLHTTP技術,Jscript服務端腳本,以及ADO技術,寫了一個小程序,把這些內容抓取到了本地數據庫。抓取下來,然后就數據庫對數據庫導數據就比較方便了。先建立一個Access數據庫,結構如下

Id 自動編號 標識,主鍵
oldID 數字 舊數據編碼
Title 標題 文本
Content 備注 內容

  具體實現代碼如下

<%@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[^<>]+?\>((.|\n)*?)<\/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>

  下一步就是,把這個Access的數據庫的內容導入到服務器的數據庫里了,但是還有一些東西,就是原來的文章是分類的,所以導入的時候還得手工分類,因為在分析鏈接的時候正則表達式本來寫就很麻煩,但還算嚴謹,如果把分類也用正則表達式解析的話,會很麻煩,因為分類是包含在<td>里面的,而那個頁的<td>標簽又很多,要想定位分類文字所在的<td>會很麻煩,即便寫出來,程序也會失去靈活性,變得難以維護,所以現在只做到了這一步。
萬企互聯
標簽: