<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>上海SEO &#187; WEB爬虫</title>
	<atom:link href="http://www.seoweb-sh.com/tag/web%e7%88%ac%e8%99%ab/feed" rel="self" type="application/rss+xml" />
	<link>http://www.seoweb-sh.com</link>
	<description>上海SEO顾问专业服务团队,为上海地区公司与企业网站提供优质全方位的网站优化,SEO顾问,SEO培训服务,上海SEO咨询电话:18616593992</description>
	<lastBuildDate>Wed, 21 Dec 2011 08:50:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>实现蜘蛛捕捉的PHP代码 (WEB爬虫)</title>
		<link>http://www.seoweb-sh.com/621.html</link>
		<comments>http://www.seoweb-sh.com/621.html#comments</comments>
		<pubDate>Sun, 19 Apr 2009 14:46:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[上海SEO案例]]></category>
		<category><![CDATA[上海SEO相关]]></category>
		<category><![CDATA[WEB爬虫]]></category>
		<category><![CDATA[网络机器人]]></category>
		<category><![CDATA[网络爬虫程序]]></category>
		<category><![CDATA[网页蜘蛛]]></category>

		<guid isPermaLink="false">http://www.seoweb-sh.com/?p=621</guid>
		<description><![CDATA[另类搜索资料的方法：网络爬虫程序,WEB爬虫,网页蜘蛛，网络机器人大家比较熟悉使用各种搜索引擎，但是，还有一种更主动和专门的搜索技术：网络爬虫。
网络爬虫（又被称为网页蜘蛛，网络机器人，在FOAF社区中间，更经常的称为网页追逐者），是一种按照一定的规则，自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁，自动索引，模拟程序或者蠕虫。
　　这些处理被称为网络抓取或者蜘蛛爬行。很多站点，尤其是搜索引擎，都使用爬虫提供最新的数据，它主要用于提供它访问过页面的一个副本，然后，搜索引擎就可以对得到的页面进行索引，以提供快速的访问。蜘蛛也可以在web上用来自动执行一些任务，例如检查链接，确认html代码；也可以用来抓取网页上某种特定类型信息，例如抓取电子邮件地址（通常用于垃圾邮件）。
　　一个网络蜘蛛就是一种机器人，或者软件代理。大体上，它从一组要访问的URL链接开始，可以称这些URL为种子。爬虫访问这些链接，它辨认出这些页面的所有超链接，然后添加到这个URL列表，可以称作检索前沿。这些URL按照一定的策略反复访问。
网页搜索策略
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题，目前常见的是广度优先和最佳优先方法。
　　广度优先搜索策略
　　广度优先搜索策略是指在抓取过程中，在完成当前层次的搜索后，才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页，一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用，先用广度优先策略抓取网页，再将其中无关的网页过滤掉。这些方法的缺点在于，随着抓取网页的增多，大量的无关网页将被下载并过滤，算法的效率将变低。
　　最佳优先搜索策略
　　最佳优先搜索策略按照一定的网页分析算法，预测候选URL与目标网页的相似度，或与主题的相关性，并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是，在爬虫抓取路径上的很多相关网页可能被忽略，因为最佳优先策略是一种局部最优搜索算法。因此需要将最佳优先结合具体的应用进行改进，以跳出局部最优点。将在第4节中结合网页分析算法作具体的讨论。研究表明，这样的闭环调整可以将无关网页数量降低30%~90%。
网页分析算法
网页分析算法可以归纳为基于网络拓扑、基于网页内容和基于用户访问行为三种类型。
　　基于网络拓扑的分析算法
　　基于网页之间的链接，通过已知的网页或数据，来对与其有直接或间接链接关系的对象（可以是网页或网站等）作出评价的算法。又分为网页粒度、网站粒度和网页块粒度这三种。
　　 网页(Webpage)粒度的分析算法
　　PageRank和HITS算法是最常见的链接分析算法，两者都是通过对网页间链接度的递归和规范化计算，得到每个网页的重要度评价。PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在，但忽略了绝大多数用户访问时带有目的性，即网页和链接与查询主题的相关性。针对这个问题，HITS算法提出了两个关键的概念：权威型网页（authority）和中心型网页（hub）。
　　基于链接的抓取的问题是相关页面主题团之间的隧道现象，即很多在抓取路径上偏离主题的网页也指向目标网页，局部评价策略中断了在当前路径上的抓取行为。文献[21]提出了一种基于反向链接（BackLink）的分层式上下文模型（Context Model），用于描述指向目标网页一定物理跳数半径内的网页拓扑图的中心Layer0为目标网页，将网页依据指向目标网页的物理跳数进行层次划分，从外层网页指向内层网页的链接称为反向链接。
　　 网站粒度的分析算法
　　网站粒度的资源发现和管理策略也比网页粒度的更简单有效。网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。SiteRank的计算方法与PageRank类似，但是需要对网站之间的链接作一定程度抽象，并在一定的模型下计算链接的权重。
　　网站划分情况分为按域名划分和按IP地址划分两种。文献[18]讨论了在分布式情况下，通过对同一个域名下不同主机、服务器的IP地址进行站点划分，构造站点图，利用类似PageRank的方法评价SiteRank。同时，根据不同文件在各个站点上的分布情况，构造文档图，结合SiteRank分布式计算得到DocRank。文献[18]证明，利用分布式的SiteRank计算，不仅大大降低了单机站点的算法代价，而且克服了单独站点对整个网络覆盖率有限的缺点。附带的一个优点是，常见PageRank 造假难以对SiteRank进行欺骗。
　　网页块粒度的分析算法
　　在一个页面中，往往含有多个指向其他页面的链接，这些链接中只有一部分是指向主题相关网页的，或根据网页的链接锚文本表明其具有较高重要性。但是，在PageRank和HITS算法中，没有对这些链接作区分，因此常常给网页分析带来广告等噪声链接的干扰。在网页块级别(Blocklevel)进行链接分析的算法的基本思想是通过VIPS网页分割算法将网页分为不同的网页块(page block)，然后对这些网页块建立pagetoblock和blocktopage的链接矩阵，分别记为Z和X。于是，在pagetopage图上的网页块级别的PageRank为Wp=X×Z；在blocktoblock图上的BlockRank为Wb=Z×X。已经有人实现了块级别的PageRank和HITS算法，并通过实验证明，效率和准确率都比传统的对应算法要好。
　　 基于网页内容的网页分析算法
　　基于网页内容的分析算法指的是利用网页内容（文本、数据等资源）特征进行的网页评价。网页的内容从原来的以超文本为主，发展到后来动态页面（或称为Hidden Web）数据为主，后者的数据量约为直接可见页面数据（PIW，Publicly Indexable Web）的400~500倍。另一方面，多媒体数据、Web Service等各种网络资源形式也日益丰富。因此，基于网页内容的分析算法也从原来的较为单纯的文本检索方法，发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。本节根据网页数据形式的不同，将基于网页内容的分析算法，归纳以下三类：第一种针对以文本和超链接为主的无结构或结构很简单的网页；第二种针对从结构化的数据源（如RDBMS）动态生成的页面，其数据不能直接批量访问；第三种针对的数据界于第一和第二类数据之间，具有较好的结构，显示遵循一定模式或风格，且可以直接访问。
　　基于文本的网页分析算法
　　1) 纯文本分类与聚类算法 
　　很大程度上借用了文本检索的技术。文本分析算法可以快速有效的对网页进行分类和聚类，但是由于忽略了网页间和网页内部的结构信息，很少单独使用。
　　2) 超文本分类和聚类算法
实现蜘蛛捕捉的PHP代码 (WEB爬虫)
function get_naps_bot()
{
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (strpos($useragent, &#8216;googlebot&#8217;) !== false){
return &#8216;Googlebot&#8217;;
}
if (strpos($useragent, &#8216;msnbot&#8217;) !== false){
return &#8216;MSNbot&#8217;;
}
if (strpos($useragent, &#8217;slurp&#8217;) !== false){
return &#8216;Yahoobot&#8217;;
}
if (strpos($useragent, &#8216;baiduspider&#8217;) !== false){
return &#8216;Baiduspider&#8217;;
}
if (strpos($useragent, &#8217;sohu-search&#8217;) !== false){
return &#8216;Sohubot&#8217;;
}
if (strpos($useragent, &#8216;lycos&#8217;) !== false){
return &#8216;Lycos&#8217;;
}
if (strpos($useragent, &#8216;robozilla&#8217;) !== false){
return &#8216;Robozilla&#8217;;
}
return false;
}
function nowtime(){
$date=date(&#8221;Y-m-d.G:i:s&#8221;);
return [...]]]></description>
			<content:encoded><![CDATA[<p>另类搜索资料的方法：网络<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/1917.html" title="爬虫">爬虫</a></span>程序,WEB爬虫,<a href="http://baike.baidu.com/view/284853.htm" target="_blank">网页蜘蛛</a>，网络<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/1917.html" title="机器人">机器人</a></span>大家比较熟悉使用各<a href="http://www.seoweb-sh.com">种搜索引擎</a>，但是，还有一种更主动和专门的搜索技术：网络爬虫。<br />
网络爬虫（又被称为网页<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/1917.html" title="蜘蛛">蜘蛛</a></span>，网络机器人，在FOAF社区中间，更经常的称为网页追逐者），是一种按照一定的规则，自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁，自动索引，模拟程序或者蠕虫。<br />
　　这些处理被称为网络抓取或者蜘蛛爬行。很多站点，尤其是<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/1664.html" title="搜索引擎">搜索引擎</a></span>，都使用爬虫提供最新的数据，它主要用于提供它访问过页面的一个副本，然后，搜索引擎就可以对得到的页面进行索引，以提供快速的访问。蜘蛛也可以在web上用来自动执行一些任务，例如检查链接，确认html代码；也可以用来抓取网页上某种特定类型信息，例如抓取电子邮件地址（通常用于垃圾邮件）。<span id="more-621"></span><br />
　　一个网络蜘蛛就是一种机器人，或者软件代理。大体上，它从一组要访问的URL链接开始，可以称这些URL为种子。爬虫访问这些链接，它辨认出这些页面的所有超链接，然后添加到这个URL列表，可以称作检索前沿。这些URL按照一定的策略反复访问。<br />
网页搜索策略<br />
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题，目前常见的是广度优先和最佳优先方法。<br />
　　广度优先搜索策略<br />
　　广度优先搜索策略是指在抓取过程中，在完成当前层次的搜索后，才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页，一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用，先用广度优先策略抓取网页，再将其中无关的网页过滤掉。这些方法的缺点在于，随着抓取网页的增多，大量的无关网页将被下载并过滤，算法的效率将变低。<br />
　　最佳优先搜索策略<br />
　　最佳优先搜索策略按照一定的网页分析算法，预测候选URL与目标网页的相似度，或与主题的相关性，并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为“有用”的网页。存在的一个问题是，在爬虫抓取路径上的很多相关网页可能被忽略，因为最佳优先策略是一种局部最优<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/1922.html" title="搜索算法">搜索算法</a></span>。因此需要将最佳优先结合具体的应用进行改进，以跳出局部最优点。将在第4节中结合网页分析算法作具体的讨论。研究表明，这样的闭环调整可以将无关网页数量降低30%~90%。<br />
网页分析算法<br />
网页分析算法可以归纳为基于网络拓扑、基于网页内容和基于用户访问行为三种类型。<br />
　　基于网络拓扑的分析算法<br />
　　基于网页之间的链接，通过已知的网页或数据，来对与其有直接或间接链接关系的对象（可以是网页或网站等）作出评价的算法。又分为网页粒度、网站粒度和网页块粒度这三种。<br />
　　 网页(Webpage)粒度的分析算法<br />
　　<a href="http://www.seoweb-sh.com/tag/pr">PageRank</a>和HITS算法是最常见的链接分析算法，两者都是通过对网页间链接度的递归和规范化计算，得到每个网页的重要度评价。PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在，但忽略了绝大多数用户访问时带有目的性，即网页和链接与查询主题的相关性。针对这个问题，HITS算法提出了两个关键的概念：权威型网页（authority）和中心型网页（hub）。<br />
　　基于链接的抓取的问题是相关页面主题团之间的隧道现象，即很多在抓取路径上偏离主题的网页也指向目标网页，局部评价策略中断了在当前路径上的抓取行为。文献[21]提出了一种基于反向链接（BackLink）的分层式上下文模型（Context Model），用于描述指向目标网页一定物理跳数半径内的网页拓扑图的中心Layer0为目标网页，将网页依据指向目标网页的物理跳数进行层次划分，从外层网页指向内层网页的链接称为反向链接。<br />
　　 网站粒度的分析算法<br />
　　网站粒度的资源发现和管理策略也比网页粒度的更简单有效。网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。SiteRank的计算方法与PageRank类似，但是需要对网站之间的链接作一定程度抽象，并在一定的模型下计算链接的权重。<br />
　　网站划分情况分为按域名划分和按IP地址划分两种。文献[18]讨论了在分布式情况下，通过对同一个域名下不同主机、服务器的IP地址进行站点划分，构造站点图，利用类似PageRank的方法评价SiteRank。同时，根据不同文件在各个站点上的分布情况，构造文档图，结合SiteRank分布式计算得到DocRank。文献[18]证明，利用分布式的SiteRank计算，不仅大大降低了单机站点的算法代价，而且克服了单独站点对整个网络覆盖率有限的缺点。附带的一个优点是，常见PageRank 造假难以对SiteRank进行欺骗。<br />
　　网页块粒度的分析算法<br />
　　在一个页面中，往往含有多个指向其他页面的链接，这些链接中只有一部分是指向主题相关网页的，或根据网页的链接<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/121.html" title="锚文本">锚文本</a></span>表明其具有较高重要性。但是，在PageRank和HITS算法中，没有对这些链接作区分，因此常常给网页分析带来广告等噪声链接的干扰。在网页块级别(Blocklevel)进行链接分析的算法的基本思想是通过VIPS网页分割算法将网页分为不同的网页块(page block)，然后对这些网页块建立pagetoblock和blocktopage的链接矩阵，分别记为Z和X。于是，在pagetopage图上的网页块级别的PageRank为Wp=X×Z；在blocktoblock图上的BlockRank为Wb=Z×X。已经有人实现了块级别的PageRank和HITS算法，并通过实验证明，效率和准确率都比传统的对应算法要好。<br />
　　 基于网页内容的网页分析算法<br />
　　基于网页内容的分析算法指的是利用网页内容（<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/2057.html" title="文本">文本</a></span>、数据等资源）特征进行的网页评价。网页的内容从原来的以超文本为主，发展到后来动态页面（或称为Hidden Web）数据为主，后者的数据量约为直接可见页面数据（PIW，Publicly Indexable Web）的400~500倍。另一方面，多媒体数据、<a href="http://www.seoweb-sh.com/web">Web</a> Service等各种网络资源形式也日益丰富。因此，基于网页内容的分析算法也从原来的较为单纯的文本检索方法，发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。本节根据网页数据形式的不同，将基于网页内容的分析算法，归纳以下三类：第一种针对以文本和超链接为主的无结构或结构很简单的网页；第二种针对从结构化的数据源（如RDBMS）动态生成的页面，其数据不能直接批量访问；第三种针对的数据界于第一和第二类数据之间，具有较好的结构，显示遵循一定模式或风格，且可以直接访问。<br />
　　基于文本的网页分析算法<br />
　　1) 纯文本分类与聚类算法 <br />
　　很大程度上借用了文本检索的技术。文本分析算法可以快速有效的对网页进行分类和聚类，但是由于忽略了网页间和网页内部的结构信息，很少单独使用。<br />
　　2) 超文本分类和聚类算法</p>
<div><strong>实现蜘蛛捕捉的<span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/2183.html" title="PHP">PHP</a></span>代码 (WEB爬虫)</strong></div>
<div>function get_naps_bot()<br />
{<br />
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);</div>
<p>if (strpos($useragent, &#8216;googlebot&#8217;) !== false){<br />
return &#8216;Googlebot&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8216;msnbot&#8217;) !== false){<br />
return &#8216;MSNbot&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8217;slurp&#8217;) !== false){<br />
return &#8216;Yahoobot&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8216;baiduspider&#8217;) !== false){<br />
return &#8216;Baiduspider&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8217;sohu-search&#8217;) !== false){<br />
return &#8216;Sohubot&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8216;lycos&#8217;) !== false){<br />
return &#8216;Lycos&#8217;;<br />
}</p>
<p>if (strpos($useragent, &#8216;robozilla&#8217;) !== false){<br />
return &#8216;Robozilla&#8217;;<br />
}<br />
return false;<br />
}</p>
<p>function nowtime(){<br />
$date=date(&#8221;Y-m-d.G:i:s&#8221;);<br />
return $date;<br />
}</p>
<p>$searchbot = get_naps_bot();</p>
<p>if ($searchbot) {<br />
$tlc_thispage = addslashes($_SERVER['HTTP_USER_AGENT']);<br />
$url=$_SERVER['HTTP_REFERER'];<br />
$file=&#8221;robotlog.txt&#8221;;<br />
$time=nowtime();<br />
$data=fopen($file,&#8221;a&#8221;);<br />
fwrite($data,&#8221;Time:$time robot:$searchbot URL:$tlc_thispage &#8220;);<br />
fclose($data);<br />
}</p>
<p>查看更多<a href="http://www.seoweb-sh.com/category/seo/seoyh"><strong><span class='wp_keywordlink'><a href="http://www.seoweb-sh.com/" title="SEO">SEO</a></span>技巧</strong></a><br />
<strong><a href="http://www.seoweb-sh.com">上海SEO</a></strong> <a href="http://www.seoweb-sh.com/edu">上海SEO培训</a>@ <a href="http://www.seoweb-sh.com"><em>地杰</em></a></p>
<div class="similarity"><ul><li>Unique Post</li></ul></div><!-- Cat -->]]></content:encoded>
			<wfw:commentRss>http://www.seoweb-sh.com/621.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

