网络爬虫文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$the_first_content=file_get_contents($url);
$the_second_content=file_get_contents($url);
$pattern1 = "/http:\/\/[a-zA-Z0-9\.\?\/\-\=\&\:\+\-\_\'\"]+/";
$pattern2="/http:\/\/[a-zA-Z0-9\.]+/";
$new_array2=array_unique($matches2[0]);
$final_array=array_merge($new_array1,$new_array2);
$final_array=array_unique($final_array);
for($i=0;$i<count($final_array);$i++)
preg_match_all($pattern2, $the_second_content, $matches2);
preg_match_all($pattern1, $the_first_content, $matches1);
$new_array1=array_unique($matches1[0]);
6
上图是一个用户界面,当用户输入一个合法的URL时,爬虫启动,将获取到的链接全部存储到本地mysql数据库中。例如这里输入了,接下来去查询一下数据库是否有数据插入。
从上图可以看到,数据库中已经有了网址数据了。
7
<?php
require_once('libmod.php');
2.深度优先所搜策略
深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条路线。深度优先策略设计较为简单。然而门户网站提供的链接往往最具价值,PageRank也很高,但每深入一层,网页价值和PageRank都会相应地有所下降。这暗示了重要网页通常距离种子较近,而过度深入抓取到的网页却价值很低。同时,这种策略抓取深度直接影响着抓取命中率以及抓取效率,对抓取深度是该种策略的关键。
1.广度优先搜索策略
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
网络爬虫说明文档
1.
网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:
{
if(ereg("^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\.。])+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$", $final_array[$i]))
{
$sql="insert into urls_info(url) values('$final_array[$i]')";
$DbLink4Login->query($sql);
}
}
$sql="select url from urls_info where id=$j";
$row=$DbLink4Login->query($sql);
$url=mysql_result($row,0);
}
$DbLink4Login->close();et_urls();
?>
8
虽然初步实现了抓取网页链接的功能,但是如何构建一个链接队列,使爬虫可以实现循环爬取,这里我只是设定了一个具体的爬取次数,还有不足之处就是没有将数据库中的链接显示到界面上,这一点以后可以完善,对于去重这方面我是直接使用了数据库的过滤功能,而没有自己去设计。
(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
(2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。
为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
以下图为例,分别写出广度优先和深度优先遍历的结果:
广度优先遍历路径:A B C D E FG H I
深度优先遍历路径:A F G E H I B C D
5
网络爬虫实现的重难点主要包括如何构建一个URL搜索队列,然后是将获取到的链接进行解析去除掉一些非法的网页链接例如js文件,css文件等。然后就是如何将获取到的链接进行去重处理。还有就是现在有很多的网站采取AJAX的方式来构建网站,好多的有用链接是包含在js文件中,如何获取到这部分的有用链接也是一个难点。
2
3
静态网页主要是由一个个html文档构成,html文件是树状结构,结构清晰,网页中的描述信息一般都包含在<title></title>节点内,网页链接一般都包含在<a></a>节点内。故爬虫在抓取网页链接及其描述信息只需要抓取这些节点中的内容,而无需下载整个页面。
4
在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:
?>
<?php
set_time_limit(0);
function get_urls(){
$k=0;
$url=$_GET['url'];
if($url=='http://'){
echo"请输入网址";
}else{
$DbLink4Login = new DB;
for($j=1;$j<=50;$j++){
相关文档
最新文档