<?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>中文Flex例子 &#187; 网络爬虫</title>
	<atom:link href="http://blog.minidx.com/tag/%e7%bd%91%e7%bb%9c%e7%88%ac%e8%99%ab/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.minidx.com</link>
	<description>中文Adobe Flex例子,Flex实例教程,RIA资源,全文检索技术,算法和数据结构</description>
	<lastBuildDate>Thu, 31 Mar 2011 03:22:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>关于开源的网络爬虫/网络蜘蛛larbin结构分析的一篇非常不错的文章</title>
		<link>http://blog.minidx.com/2009/01/01/1862.html</link>
		<comments>http://blog.minidx.com/2009/01/01/1862.html#comments</comments>
		<pubDate>Thu, 01 Jan 2009 14:31:28 +0000</pubDate>
		<dc:creator>Minidxer</dc:creator>
				<category><![CDATA[搜索引擎]]></category>
		<category><![CDATA[labin]]></category>
		<category><![CDATA[网络爬虫]]></category>
		<category><![CDATA[网络蜘蛛]]></category>

		<guid isPermaLink="false">http://blog.minidx.com/?p=1862</guid>
		<description><![CDATA[larbin是一种开源的网络爬虫/网络蜘蛛，由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取，最后为搜索引擎提供广泛的数据来源。Larbin只是一个爬虫，也就是说larbin只抓取网页，至于如何parse的事情则由用户自己完成。另外，如何存储到数据库以及建立索引的事情 larbin也不提供。一个简单的larbin的爬虫可以每天获取５００万的网页。
利用larbin，我们可以轻易的获取/确定单个网站的所有联结，甚至可以镜像一个网站；也可以用它建立url 列表群，例如针对所有的网页进行 url retrive后，进行xml的联结的获取。或者是 mp3，或者定制larbin，可以作为搜索引擎的信息的来源。








不过它的最大的亮点还是开源，相信很多人拿到larbin源代码的时候会感觉无从入手，下面是一篇非常不错的开源的网络爬虫/网络蜘蛛larbin结构分析的文章,有兴趣的最好仔细阅读尝试一下。
互联网是一个庞大的非结构化的数据库，将数据有效的检索并组织呈现出来有着巨大的应用前景，尤其是类似RSS的以XML为基础的结构化的数据越来越多，内容的组织方式越来越灵活，检索组织并呈现会有着越来越广泛的应用范围，同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫，信息的来源入口。一个高效，灵活可扩展的爬虫对以上应用都有着无可替代的重要意义。
要设计一个爬虫，首先需要考虑的效率。对于网络而言，基于TCP/IP的通信编程有几种方法。
第一种是单线程阻塞，这是最简单也最容易实现的一种，一个例子：在Shell中通过curl，pcregrep等一系统命令可以直接实现一个简单的爬虫，但同时它的效率问题也显而易见：由于是阻塞方式读取，dns解析，建立连接，写入请求，读取结果这些步骤上都会产生时间的延迟，从而无法有效的利用服务器的全部资源。
第二种是多线程阻塞。建立多个阻塞的线程，分别请求不同的url。相对于第一种方法，它可以更有效的利用机器的资源，特别是网络资源，因为无数线程在同时工作，所以网络会比较充分的利用，但同时对机器CPU资源的消耗也是比较大，在用户级多线程间的频繁切换对于性能的影响已经值得我们考虑。
第三种是单线程非阻塞。这是目前使用的比较多的一种做法，无论在client还是server都有着广泛的应用。在一个线程内打开多个非阻塞的连接，通过poll/epoll /select对连接状态进行判断，在第一时间响应请求，不但充分利用了网络资源，同时也将本机CPU资源的消耗降至最低。这种方法需要对dns请求，连接，读写操作都采用异步非阻塞操作，其中第一种比较复杂，可以采用adns作为解决方案，后面三个操作相对简单可以直接在程序内实现。
效率问题解决后就需要考虑具体的设计问题了。
url肯定需要一个单独的类进行处理，包括显示，分析url，得到主机，端口，文件数据。
然后需要对url进行排重，需要一个比较大的url Hash表。
如果还要对网页内容进行排重，则还需要一个Document Hash表。
爬过的url需要记录下来，由于量比较大，我们将它写到磁盘上，所以还需要一个FIFO的类(记作urlsDisk)。
现在需要爬的url同样需要一个FIFO类来处理，重新开始时，url会从定时从爬过的url FIFO里取出来，写到这个FIFO里。正在运行的爬虫需要从这个FIFO里读数据出来，加入到主机类的url列表里。当然，也会从前一个FIFO里直接读url出来，不过优先级应该比这个里面出来的url低，毕竟是已经爬过的。
爬虫一般是对多个网站进行爬取，但在同时站点内dns的请求可以只做一次，这就需要将主机名独立于url，单独有一个类进行处理。
主机名解析完成后需要有一个解析完成的IP类与之应用，用于connect的时候使用。
HTML文档的解析类也要有一个，用来分析网页，取出里面的url，加入到urlsDisk。
再加上一些字符串，调度类，一个简单的爬虫基本上就完成了。
以上基本上是Larbin的设计思路，Larbin在具体实现上还有一些特殊的处理，例如带了一个webserver，以及对特殊文件的处理。 Larbin有一点设计不不太好，就是慢的访问会越来越多，占用大量的连接，需要改进，另外如果对于大规模的爬虫，这仅仅实现了抓取的部分，要分布式的扩展还需要增加url的集中管理与调度以及前台spider的分布式算法。
Larbin网站爬虫简明使用说明
larbin是一种爬虫工具，我也是前段时间网上看到 Larbin 一种高效的搜索引擎爬虫工具 一文时才知道有这么个东西，初步认定，我比较喜欢这个工具(比起nutch的crawl来说),因为它是C++写的，类似C嘛，我熟，可以自己改改，顺便学习一下C++(几年来的经验告诉我说：改别人的东西来学一种技术比从头写helloworld快很多)。于是开始了我艰辛的larbin试用之旅。 
　　回头看看自己遇到的问题都是由于没认真看文档引起的，唉，老毛病了。下次即使是E文的也得好好看，不能盲目的试，浪费时间。 
　　larbin官方地址：http://larbin.sourceforge.net/index-eng.html
一，编译 
　　这也好说，whahahaha，那是！因为从官方网站下下来的代码不能编译通过(linux gcc下)
　　./configure 
　　make
　　gcc -O3 -Wall -D_REENTRANT -c -o parse.o parse.c 
　　parse.c:115: error: conflicting types for ’adns__parse_domain’ 
　　internal.h:571: error: previous declaration of ’adns__parse_domain’ was here
　　parse.c:115: error: conflicting types for ’adns__parse_domain’
　　internal.h:571: error: previous declaration of ’adns__parse_domain’ was here 
　　gmake[1]: [...]]]></description>
		<wfw:commentRss>http://blog.minidx.com/2009/01/01/1862.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>网络爬虫如何抓取web2.0 Ajax页面</title>
		<link>http://blog.minidx.com/2007/10/31/39.html</link>
		<comments>http://blog.minidx.com/2007/10/31/39.html#comments</comments>
		<pubDate>Wed, 31 Oct 2007 11:24:07 +0000</pubDate>
		<dc:creator>Minidxer</dc:creator>
				<category><![CDATA[搜索引擎]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[DOM结构]]></category>
		<category><![CDATA[HTTP请求]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[事件驱动]]></category>
		<category><![CDATA[协议驱动]]></category>
		<category><![CDATA[响应]]></category>
		<category><![CDATA[异步请求]]></category>
		<category><![CDATA[网络爬虫]]></category>
		<category><![CDATA[静态页面]]></category>

		<guid isPermaLink="false">http://blog.minidx.com/?p=39</guid>
		<description><![CDATA[伴随着AJAX/Web2.0的流行，如何抓取Ajax页面成了搜索引擎急需解决的一个问题，因为Ajax颠覆了传统的纯HTTP请求/响应协议机制，如果搜索引擎依旧采用“爬”的机制，是无法抓取到AJAX页面的有效数据的。







AJAX，也就是Asychronous Javascript and XML，由于采用了Javascript驱动的异步请求/响应机制，以往的爬虫们缺乏Javascript语义上的理解，基本上是无法模拟触发Javascript的异步调用并解析返回的异步回调逻辑和内容。
另外AJAX的应用中，Javascript会对DOM结构进行大量地变动,甚至页面所有的内容都是通过Javascript直接从服务器端读取并动态绘制出来.这个对于&#8221;习惯了&#8221;DOM结构相对不变的静态页面,简直是无法理解的.
由此可以看出,以往的爬虫是基于协议驱动的,而对于AJAX这样的技术，所需要的“爬虫”引擎必须是基于事件驱动的。要实现事件驱动，首先需要解决下面几点问题
●Javascript的交互分析和解释
●DOM事件的处理和解释分发
●动态DOM内容语义的抽取
至于具体如何去实现，个人觉得Crawling Ajax-driven Web 2.0 Applications这篇论文很有参考价值。有兴趣地可以研究研究。
你可能还对下列文章感兴趣:利用JSON代替XML解决各版本浏览器对DOM支持不同的问题15款手风琴(Accordion)效果的Ajax插件(推荐)关于开源的网络爬虫/网络蜘蛛larbin结构分析的一篇非常不错的文章关于Ntt.cc上有偿征集Flex,Flash,Ajax,JavaScript相关文章的设想/具体实施最完整的AJAX Framework和JavaScript Libraries列表(124+)]]></description>
		<wfw:commentRss>http://blog.minidx.com/2007/10/31/39.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 2/18 queries in 0.429 seconds using disk
Object Caching 231/469 objects using disk

Served from: blog.minidx.com @ 2012-02-10 03:20:26 -->
