这篇文章主要是对web爬虫有个大概的认知。
概览web爬虫
web爬虫主要功能是从web中发现,下载以及存储内容。广泛应用于各种搜索引擎中。
一个典型的web爬虫主要由以下的部分组成:
- 能被爬虫识别的URL库。
- 文档下载模块,主要用于从web中下载内容。
- 文档解析模块,用于解析下载文档中的内容,如解析HTML,PDF,Word等等。这个模块还要提取网页中的URL和一些对于索引有用的数据。
- 存储文档的元数据以及内容的库。
- 规范化URL模块,把URL转成标准的格式。
- URL过滤器,爬虫可以过滤掉不需要的URL。
设计与实现上述模块,主要取决于你的爬虫到底要爬取什么以及要抓取的范围。最简单的例子是从一个已知的站点抓取一些网页,这个爬虫代码用一页纸就可以写完。互联网应用中,可能会碰到这种十分简单的需求,但是如果要实现一个爬取大量文档的爬虫,就不是那么简单了。一般来说这个爬虫就是N个应用组成,并且难点是基于分布式的。
爬虫的两个阶段
一个典型的爬虫主要有如下两个阶段
- URL库初始化然后开始爬取。
- 爬虫读取没有访问过的URL,来确定它的工作范围。
对于要抓取的URL,要进行如下的不重
- 获取URL的内容
- 解析内容,获取URL以及所需的数据。
- 存储有价值的数据。
- 规范化新抓取的URL。
- 过滤掉不需要爬去的URL。
- 把要抓取的URL更新到URL库中。
- 重复步骤2,直到抓取的网页深度完毕为止。
从广度进行分类的话,爬虫有两类。通用型和集中型。通用型是采集所有能解析的文档。它们主要通过URL过滤技术来实现这一过程。而集中型爬虫主要爬取特定内容的文档,如爬取sina博客,格式为固定内容也是我们感兴趣的。
幸运的是,有开源的爬虫可以使用
在java中,nutch和heritrix都提供了爬虫的实现。Nutch是apache lucene的子项目,地址是http://lucene.apache.org/nutch/。这个项目非常稳定,并且文档丰富。Nutch把多个网页存储在一个文件中。对于大的爬虫来说,这么降低I/O读写,性能更加优秀。
Heritrix是互联网存档的web爬虫。项目地址为http://crawler.archive.org/。Heritrix专注于大型爬虫的实现。许可证为LGPL。
另外提一下,还有一个项目值得关注,那就是apache tika。项目地址为http://tika.apache.org/。tika使用解析器从文档中发现以及提取元数据和文本内容。
分享到:
相关推荐
本案例集合了巨大的搜索引擎,后台还有web爬虫程序,试用于web工程师借鉴,参考
广东工业大学计算机学院学生专用的基于web爬虫基本原理的新技术专题课程论文。欢迎广大的广工学子前来下载。其它学校的如果合适的话,也拿去用吧。。。
毕业设计web爬虫,基于web爬虫的疫情监测系统源码+数据库 建立数据库中的表 python manage.py makemigrations python manage.py migrate python manage.py runserver --nothreading --noreload 0.0.0.0:8001 修改...
毕业设计web爬虫,基于web爬虫的疫情监测系统
web技术爬虫可用很犀利
spidy - 简单易用的命令行Web爬虫
用python编写的一个微型Web爬虫
web爬虫程序(亲测可用,含sql文件) 有问题咨询237006629@qq.com SohuNews.java第122行插入新闻时间有误,需要的可以自己改下
Wombat - 轻量级的Ruby Web爬虫拥有一个优雅的DSL能够解析网页上的结构化数据
web爬虫合集.zip
Heritrix是一个开源,可扩展的web爬虫项目。用户可以使用它来从网上抓取想要的资源。Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取...
广域网分布式Web爬虫相对于局域网爬虫的诸多优势,提出了广域网分布式Web爬虫的3个核心问题:Web划分、Agent协同和Agent部署.围绕这3个问题,对目前学术界和商业界出现的多种实现方案和策略进行了全面的综述,深入讨论了...
RubyRetriever - 异步Web爬虫。可以作为命令行可执行和爬虫框架使用
Python实现的Web爬虫
使用Node.js和Puppeteer创建Web爬虫
ECommerceCrawlers Web爬虫 v11.zip
Sukhoi 简约和强大的Web爬虫
AutoCrawler - 谷歌、Naver多进程图片Web爬虫