关于ASP新闻采集问题!

关于ASP新闻采集问题!,第1张

中东战争(Middle East,Wars of)

中东,是西方国家对西亚和北非的埃及等离欧洲较近的东方国家的习惯称呼。

所谓“中 东战争”是指1948~1982年间,阿拉伯国家与以色列中东地区进行的大规模战争,这是第 二次世界大战后持续时间最长的战争。阿拉伯国家是指阿拉伯民族占大多数的国家,主要分 布在亚洲和非洲北部的中东地区。以色列是犹太人建立的国家。阿拉伯世界和以色列的争端 由来已久。历史上,阿拉伯民族和犹太民族都曾在巴勒斯坦地区(位于地中海、死海、约旦 河之间)建立过国家。公元前30世纪,原在阿拉伯半岛的迦南人迁至巴勒斯坦沿海和平原地 区定居。公元前13世纪,犹太人的祖先祖先希伯莱人征服迦南人,在巴勒斯坦建立希伯莱王 国。此后雀配颂,巴勒斯坦先后被波斯帝国、希腊、罗马和土耳其等外来民族征服,犹太人被迫流 落到世界各地。19世纪末,犹太复国主义运动兴起,主张分散在世界各地的犹太人重返巴勒 斯坦,建立犹太人为主的国家。1917年英国占领巴勒斯坦,当时这个地区阿拉伯人66万人, 犹太人仅9万人,但英美为控制巴勒斯坦地区和苏伊士河,竭力支持犹太复国主义运动。在 他们的策划下已经在世界各地定居的犹太人大批移居巴勒斯坦,从此,阿、以两个民族间的 矛盾日益加深,不断发生流血事件。1947年11月29日,在美英 *** 纵下的联合国大会通过决 议,决定在巴勒斯坦分别建卖知立阿拉伯国和犹太国,耶路撒冷由两国分治,阿拉伯世界广泛反 对这个决议,没有建立阿拉伯国家,也坚决反对犹太人建国。1949年5月14日,犹太人宣布 在巴勒斯坦地区建立以色列国,5月15日,阿拉伯国家就同以色列发生第一次中东战争,结 果阿拉伯国家失利,埃及、约旦、叙利亚和黎巴嫩先后同以色列签订停战协定。战争结束 后,却遗留下许多问题,这样,逐步引发了第二、第三、第四、第五次中东战争。直到1989 年,才终于建立“巴勒斯坦国”,中东问题,尤其是巴勒斯坦人建国问题才告一段落。

第一次中东战争(亦称巴勒斯坦战争)

1947年11月第二届联合国大会通过巴勒斯坦分治决议。规定在巴勒斯坦建立阿拉伯、犹太两个国家和耶路撒冷市国际化。阿拉伯各国坚决反对分治决议与建立犹太国家。1948年5月14日英国结束对巴勒斯坦的委顷郑任统治。犹太人于当日下午宣布建立以色列国。次日晨,埃及、外约旦、伊拉克、叙利亚、黎巴嫩等阿拉伯国家出动4万军队(后增至6万)向以色列进攻,占领耶路撒冷东城区(旧城)、比尔谢巴等大片土地,逼近以“临时首都”特拉维夫。开战时,以色列武装力量约3万人,经紧急扩军,采购武器,统一各派武装力量,最后发展到10万人,并于7月、10月和12月展开反攻与进攻。阿方由于内部矛盾,缺乏统一指挥,且受帝国主义掣肘,结果战败。阿军亡约1.5万人;以军亡约6000人。1949年2~7月,埃、黎、约、叙分别同以签订停战协定。巴勒斯坦除加沙地区和约旦河西岸部分地区外,均被以色列占领。近百万巴勒斯坦阿拉伯人被赶出家园。

第二次中东战争(亦称英法以侵埃战争或苏伊士运河战争)

1956年,英、法和以色列借口埃及收回苏伊士运河公司和禁止以色列船只通过运河与蒂朗海峡,向埃及发动进攻,企图重新控制运河和镇压阿拉伯民族解放运动。10月29日,以军1个伞兵营在西奈半岛米特拉山隘空降,地面部队也越过边界进入西奈,配合英、法尔后的进攻。当时埃及总兵力约15万人,有坦克500余辆,作战飞机250余架(堪用者仅100余架)。埃及总统纳赛尔为集中兵力保卫运河,下令驻西奈的3万部队撤回运河区。以军共出动10个旅,由装甲部队率先突击,5天内占领西奈和加沙地区。31日,英法联军出动各型舰艇100余艘(含航空母舰和巡洋舰10余艘),先以200余架飞机袭击埃海、空军基地,掌握制海权、制空权11月5日,在塞得港、富阿德港附近要点实施伞降和直升机机降;6日,出动2.2万名登陆部队占领上述港口。埃及军民坚决抵抗侵略者,尤其在保卫塞得港战斗中,充分发动和武装群众,军民联合,英勇作战,并利用美、苏和英、法之间的矛盾,在全世界人民声援下,英、法、以于6日深夜被迫同意停火和撤军。埃军亡1600余人,损失飞机210余架;英、法、以军亡200余人,损失飞机约20架。英、法军于12月撤离。从此,美国便进一步插手中东事务。以军于次年3月撤离加沙地区和西奈半岛(由联合国部队进驻加沙和亚喀巴湾沿岸地区),但取得了通过蒂朗海峡的航行权。

第三次中东战争(亦称六五战争)

1967年阿、以矛盾和美、苏对中东的争夺加剧,以色列在美国支持下进一步向外扩张,借口埃及(当时称阿拉伯联合共和国)封锁亚喀巴湾,于6月5日向阿拉伯国家发起突然袭击。以军乘埃军早饭和军官上班前戒备松懈之机,集中使用200架飞机空袭埃及各空军基地,将埃军绝大部分飞机摧毁于地面,尔后又击毁叙利亚、约旦大量飞机;并出动22个旅实施多方向快速突击,4天内占领西奈半岛和加沙地区,继而攻占耶路撒冷东城区和约旦河西岸地区,10日攻占叙利亚戈兰高地。埃及对以军突袭估计不足,损失惨重。约、埃、叙先后被迫同意停火。结果,以色列又占领6.5万多平方公里的阿拉伯领土,数十万巴勒斯坦阿拉伯人被赶出家园(表1第三次中东战争阿以双方军事实力与战争损失概略统计)。

第三次中东战争后,阿、以对抗继续发展。埃海军舰艇于1967年10月使用舰舰导d击沉以军驱逐舰“埃拉特”号,首创导d击沉军舰的纪录。从1968年下半年开始,埃炮兵部队向运河东岸以军实施大规模炮击。以军则从1969年下半年开始向运河西岸包括开罗周围地区实施战略空袭。双方还各派突击队偷袭对方。1970年8月停火。这两年的战斗被称为“消耗战”。阿、以双方分别从苏、美得到新式武器装备,为下次战争做准备。苏、美对中东的争夺加剧是导致第四次中东战争的重要国际原因。

第四次中东战争(亦称十月战争)

1973年10月,埃、叙为收复失地和摆脱美、苏造成的“不战不和”局面,向以色列开战。伊拉克、约旦、阿尔及利亚、利比亚、摩洛哥、沙特阿拉伯、苏丹、科威特、突尼斯和巴勒斯坦解放组织派部队或飞机参战。埃及(总统萨达特)企图收复运河东岸部分失地,为尔后通过谈判收复西奈半岛创造条件。叙利亚(总统阿萨德)企图收复全部戈兰高地。埃、叙为达成进攻的突然性,采取反复动员复员、进行军事演习等多种欺骗措施并把开战时间选定在伊斯兰教斋月(穆斯林白天斋戒)和犹太教赎罪日(教徒当日斋戒,停止一般公务活动),隐蔽进攻企图和进攻时机。以色列于1967年侵占埃、叙部分领土后,扩大了防御纵深,并在运河东岸构筑巴列夫防线和在戈兰高地构筑防线,转取守势战略。以军自恃有强大的空军、坦克部队和侦察情报系统,骄横麻痹,疏于戒备。直到开战前数小时,以统帅部(总理G.梅厄、国防部长M.达扬等)仍认为埃、叙不敢发动进攻,在西奈半岛只驻4个旅,在戈兰高地只驻3个旅。10月6日14时,埃、叙使用优势兵力在炮兵、航空火力和防空火网掩护下,分别向西奈半岛(西线)、戈兰高地(北线)同时突然发起进攻。北线,叙3个步兵师当日突破以军防线,7日,又投入2个装甲师,进抵距以本土数公里的地区。西线,埃陆军在海、空军协同下强渡运河,第2集团军3个步兵师在大苦湖以北、第3集团军2个步兵师在大苦湖以南迅速突破巴列夫防线,步兵携带反坦克导d、火箭筒率先穿过以军各支撑点间的空隙,击毁大量以军坦克;工程兵快速破堤,9小时打开60条通道,架设浮桥12座,保障2个装甲师、2个机械化师等后续部队渡河。海军则同以军舰艇进行海战并用舰炮支援地面部队进攻。10日,埃军按预定计划停止大规模进攻。以色列在损失惨重、极为被动的情况下,迅速运员预备役部队,使总兵力增至近40万人,先以北线为重点,遏止叙军进攻并实施局部反击,集中使用空军主力向叙地面部队和防空导d阵地展开攻击并空袭叙后方大城市。11日,以军3个师转入进攻,越过1967年停火线,形成威胁叙首都大马士革之势,并打击了伊拉克、约旦的援叙部队,夺得北线战场主动权。继之,以军将重点转向西线。当埃军于14日投入1000辆坦克展开第2次大规模进攻时,以军投入800辆坦克,步、坦、炮协同作战,并使用武装直升机和其他飞机发射“小牛”、“百舌鸟”式空地导d、“白星眼”式电视制导炸d等,击毁埃坦克250辆,迫使埃军当日撤回进攻出发阵地。15日晚,以军A.沙龙师向大苦湖地区埃第2、第3集团军接合部穿插突击,先头部队于16日晨在湖北侧德维斯瓦附近渡河,摧毁若干埃防空导d阵地,为空军活动创造有利条件;架设浮桥后,又有2个师渡河,向南迂回,发展进攻;23日进抵苏伊士湾,占领阿代比耶港,对苏伊士城和埃第3集团军形成合围态势,夺得西线战场主动权。24日,埃以双方按照联合国安理会决议停战。埃、叙同以分别于次年1月和5月签署第1阶段脱离军事接触协议。至此,埃控制了运河东岸纵深约10公里的狭长地带,基本达到战略目的(1982年4月,根据1979年3月埃以和平条约,以色列完全撤出西奈半岛)。北线以军撤至1967年停火线以西。

在这次战争中,埃、叙经过周密准备对以实施突袭和两线夹击,首战告捷,使阿拉伯的民心士气为之大振。埃军渡河之役显示出诸军兵种协同作战的威力。以军动员快速,先北后西,重点用兵,化被动为主动,尤其向运河西岸的大纵深突击,对于扭转被动局面发挥了作用。双方投入的坦克、火炮、飞机、导d等数量很大,埃、以于14日一天内共展开1800辆坦克的大会战为战争史上所罕见。阿、以分别使用苏、美当时的先进武器装备和得到苏、美战略空运的及时补充并利用苏、美侦察卫星提供的情报。埃军由萨姆-2、萨姆-3、萨姆-6、萨姆-7型导d为主组成的防空体系,在战争初期掌握了战场制空权,使以军飞机数日内不敢进入运河空域;以军则使用“响尾蛇”、“蜻蜓”等空空导d和“加布里埃尔”舰舰导d对付阿军的飞机、舰艇。大规模电子对抗的展开使战场情况更为复杂,作战损耗加大。双方飞机损失的约60%、舰艇损失的80%以上,大部被毁坦克均为各种导d所击毁(表2第四次中东战争阿以双方军事实力与战争损失概略统计)。在战略指导与作战上,广泛利用电子技术和使用各种战术导d,是这次战争的突出特点。

第五次中东战争(亦称以色列入侵黎巴嫩战争)

1982年6月6日,以色列借口打击巴勒斯坦解放组织,从陆 地、空中和海上大举入侵黎巴嫩。到6月11日,以军占领了从贝鲁特到大马士革的国际公路 以南2800平方公里的黎巴嫩土地。巴勒斯坦解放组织在这一地区的基地被全部摧毁,武装力 量的主力也遭到重大损失。驻贝卡谷地的叙利亚军队也受到以色列空军的重创,萨姆导d设 施和空军力量遭到到重大损失。6月11日,叙利亚与以色列达成停火协议。接着,以色列调 集重兵对巴解总部所在地贝鲁特西区进行了长达两个多月的包围和攻击,后在联合国的调解 下,在维持和平部队的监督下,巴解总部及其万余名武装人员不得不撤出贝鲁特,分散到突 尼斯等8个阿拉伯国家。叙利亚在贝鲁特的1000多名部队也同时撤走。

抓取网页内容,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去。其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等。

目前网页采集多为3P代码为多(3P即ASP、PHP 、JSP)。用得最有代表的就动易科技公司BBS中新闻采集系统,和网上流传的新浪新闻采集系统等都是用ASP程序来使用,但速度从理论上来说不是很好。如果尝试用其它软件的多线程采集是不是更快?答案是肯定的。用DELPHI、VC、VB、JB都可以,PB似乎比较不好做。以下用DELPHI来解释采集网页数据。

一、 简单的新闻采集

新闻采集是最简单的,只要识别标题、副题、作者、出处、日期、新闻主体、分页就可以了。在采集之前肯定要取得网页的内容,所以在DELPHI里加入idHTTP控件(在indy Clients面板),然后用idHTTP1.GET 方法取得网页的内容,声明如下:

function Get(AURL: string): stringoverload

AURL参数,是string类型,指定一个URL地址字符串。函数返回也是string类型,返回网页的HTML源文件。比如我们可以这样调用:

tmpStr:= idHTTP1.Get(‘http://www.163.com’)

调用成功后,tmpstr变量里存储的就是网易主页的代码了。

接下来,讲一下数据的截取,这里,我定义了这么一个函数:

function TForm1.GetStr(StrSource,StrBegin,StrEnd:string):string

var

in_star,in_end:integer

begin

in_star:=AnsiPos(strbegin,strsource)+length(strbegin)

in_end:=AnsiPos(strend,strsource)

result:=copy(strsource,in_sta,in_end-in_star)

end

StrSource:string类型,表示HTML源文件。

StrBegin:string类型,表示截取开始的标记。

StrEnd:string,表示截取结凯扰束的标记。

函数返回字符串盯猜旦StrSource中从StrSource到StrBegin之间的一段文本。

比如:

strtmp:=TForm1.GetStr(‘A123BCD’,‘A’,‘BC’)

运行后,strtmp的值为:’123’。

关于函数里用到的AnsiPos和copy,都是系统定义的,可以从delphi的帮助文件里找到相关说明,我在这里也简单罗嗦一下:

function AnsiPos(const Substr, S: string): Integer

返回Substr在S中第一次出现的位置。

function copy(strsource,in_sta,in_end-in_star): string

返回字符串strsource中,从in_sta(整型数据)开始到in_end-in_star(整型数据)结束的字符串。

有了以上函数,我们就可以通过设置各种标记,来截取想要的文章内容了。在程序中,比较麻烦的是我们需要设置许多标记,要定位某一项内容,必须设置它的开始和结束标志。比如要取得网页上的文章标题,必须事先查看网页代码,查看出文章标题前边和后边的一些特征代码,通过这些特征代码,来截取文章兆扒的标题。

下面我们来实际演示一下,假设要采集的文章地址为http://www.xxx.com/test.htm

代码为:

<html>

<head>

<meta http-equiv="Content-Language" content="zh-cn">

<meta name="GENERATOR" content="Microsoft FrontPage 5.0">

<meta name="ProgId" content="FrontPage.Editor.Document">

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<title>新建网页 1</title>

</head>

<body>

<p align="center"><b>文章标题</b></p>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

<tr><td width="60%">作者</td>

<td width="40%">出处</td></tr>

</table>

<p><font size="2">这里是文章内容正文。</font></p>

<a href='..new_pr.asp'>上一页</a> <a href='new_ne.asp'>下一页</a>

</body>

</html>

第一步,我们用StrSource:= idHTTP1.Get(‘http://www.xxx.com/test.htm ’)将网页代码保存在strsource变量中。

然后定义strTitle、strAuthor、strCopyFrom、strContent:

strTitle:= GetStr(StrSource,’ <p align="center"><b>’,’ </b></p>’):

strAuthor:= GetStr(StrSource,’ <tr><td width="60%">’,’ </td>’):

strCopyFrom:= GetStr(StrSource,’ <td width="40%">’,’ </td></tr>’):

strContent:= GetStr(StrSource,’ <p><font size="2">,’ </font></p>’):

这样,就能把文章的标题、副题、作者、出处、日期、内容和分页分别存储在以上变量中。

第二步,用循环的办法,打开下一页,并取得内容,加到strContent变量中。

StrSource:= idHTTP1.Get(‘new_ne.asp’)

strContent:= strContent +GetStr(StrSource,’ <p><font size="2">,’ </font></p>’):

然后再判断有没有下一页,如果还有就接着取得下一页的内容。

这样就完成了一个简单的截取过程。从以上的程序代码可以看到,我们使用的截取办法都是找截取内容的头部和尾部的,如果遇到这个头部和尾部有多个怎么办?似乎没办法,只会找到第一个,所以在找之前应该验证一下是不是只有一处有这个截取的内容的前后部。

-------------

希望可以给你些帮助:)

<%

'功能:asp采集代码

url="http://news.163.com/09/0423/04/57IC37280001124J.html"

str=getHTTPPage(url)

title=strcut(str,"<h1 id=""h1title"">","</h1>",2)

content=strcut(str,"手机看新闻</a></span>","(本文来源",2)

response.write "新闻标题<br><b>"&title&"</b><br><br><br>新闻内容:<br>"&content

'获取当前网址的源代码

Function getHTTPPage(url)

On Error Resume Next

dim http

set http=Server.createobject("Microsoft.XMLHTTP")

Http.open "GET",url,false

Http.send()

if Http.readystate<>4 then

exit function

end if

getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")

set http=nothing

If Err.number<>0 then

Response.Write "<p align='center'><font color='red'><b>服务器掘核获取文件内容出错</b>旦启</font></p>"

Err.Clear

End If

End Function

Function BytesToBstr(body,Cset)

dim objstream

set objstream = Server.CreateObject("adodb.stream")

objstream.Type = 1

objstream.Mode =3

objstream.Open

objstream.Write body

objstream.Position = 0

objstream.Type = 2

objstream.Charset = Cset

BytesToBstr = objstream.ReadText

objstream.Close

set objstream = nothing

End Function

'截取字判迟掘符串,1.包括起始和终止字符,2.不包括

Function strCut(strContent,StartStr,EndStr,CutType)

Dim strHtml,S1,S2

strHtml = strContent

On Error Resume Next

Select Case CutType

Case 1

S1 = InStr(strHtml,StartStr)

S2 = InStr(S1,strHtml,EndStr)+Len(EndStr)

Case 2

S1 = InStr(strHtml,StartStr)+Len(StartStr)

S2 = InStr(S1,strHtml,EndStr)

End Select

If Err Then

strCute = "<p align='center'>没有找到需要的内容。</p>"

Err.Clear

Exit Function

Else

strCut = Mid(strHtml,S1,S2-S1)

End If

End Function

%>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12284753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存