分布式网络爬虫的基本实现简述

  一、前言

    前一段时间,小小的写了一个爬虫,是关于电商网站的。今天,把它分享出来,供大家参考,如有不足之处,请见谅!(抱拳)

  二、准备工作

    我们实现的这个爬虫是Java编写的。所用到的框架或者技术如下:

    Redis:分布式的Key-Value数据库,用来作存储临时的页面URL的仓库。

    HttpClient:Apache旗下的一款软件,用来下载页面。

    HtmlCleaner&xPath:网页分析软件,解析出相关的需要的信息。

    MySQL数据库:用于存储爬取过来的商品的详细信息。

    ZooKeeper:分布式协调工具,用于后期监控各个爬虫的运行状态。

  三、业务需求

    抓取某电商商品详细信息,需要的相关字段为:商品ID、商品名称、商品价格、商品详细信息。

  四、整体架构布局

    首先是我们的核心部分——爬虫程序。爬虫的过程为:从Redis数据仓库中取出URL,利用HttpClient进行下载,下载后的页面内容,我们使用HtmlCleaner和xPath进行页面解析,这时,我们解析的页面可能是商品的列表页面,也有可能是商品的详细页面。如果是商品列表页面,则需要解析出页面中的商品详细页面的URL,并放入Redis数据仓库,进行后期解析;如果是商品的详细页面,则存入我们的MySQL数据。具体的架构图如下:

    当核心程序爬虫编写完后,为了加快页面抓取效率,我们需要对爬虫进行改进:一是对爬虫程序进行多线程改造;二是将爬虫部署到多台服务器,进一步加快爬虫的抓取效率。以下是整个爬虫项目的架构图:

时间: 2024-11-13 11:54:43

分布式网络爬虫的基本实现简述的相关文章

Python、Redis实现分布式网络爬虫

写爬虫关键是思路,思路明确代码实现起来不是问题. 关于用Python实现一个分布式爬虫,我曾折腾了很长一段时间,翻遍了Google十几页,和 Python 分布式 爬虫 等关键字相关的博客也就那么几篇,后来在学习Redis的时候,终于找到了实现分布式的方法.看来当现有的技术解决不了实际问题的时候,是需要学习新的技术了. 具体实现思路:利用Redis的主从数据同步,所有爬虫获取到的url都放到一个redis queue中,并且Master和Slave的爬虫都从这个redis queue中获取url

伪分布式网络爬虫框架的设计与自定义实现

[项目愿景]系统基于智能爬虫方向对数据由原来的被动整理到未来的主动进攻的转变的背景下,将赋予”爬虫”自我认知能力,去主动寻找”进攻”目标.取代人工复杂而又单调的重复性工作.能够实现在人工智能领域的某一方向上独当一面的作用. [项目进展]项目一期基本实现框架搭建,对数据的处理和简单爬取任务实现. [项目说明]为了能够更好理解优秀框架的实现原理,本项目尽量屏蔽优秀开源第三方jar包实现,自定义实现后再去择优而食,形成对比. [设计原则]依据形式跟进新技术,不断积累在不同业务场景下对各个开源技术的驾驭

分布式网络爬虫Nutch中文教程nutcher(JAVA)

nutcher是中文的nutch文档,包含nutch的配置和源码解析,在github持续更新. 本教程由逼格DATA提供,未经允许,禁止转载. 可加入nutcher的bbs进行讨论:Nutch开发者 目录: Nutch教程--导入Nutch工程,执行完整爬取 Nutch流程控制源码详解(bin/crawl中文注释版) URLNormalizer源码详解(Nutch的URL正规化机制) 版权声明:本文为博主原创文章,未经博主允许不得转载.

爬虫技术收集整理

[爬虫技术收集整理] [通用知识] - 正则表达式中各种字符的含义 - Web Crawler Slide share - Quick & Dirty Python [Java语言] - [知了开发]"知了"优化 - WebMagic 调优 - ContentExtractor开源网页正文抽取工具 - 垂直型爬虫架构设计 - 分布式网络爬虫的基本实现简述 - 分布式多爬虫系统--架构设计 - httpclient 多线程高并发Get请求 - Java爬虫框架WebMagic的使

分布式爬虫:使用Scrapy抓取数据

分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自

开源爬虫 ── 专业、强大的万维网资源定向抓取、爬抓工具

网络爬虫 又称网页蜘蛛.网络机器人.在 FOAF 社区常称网页追逐者.网络爬虫 是一种按照一定规则,自动抓取万维网信息的程序或脚本.另外一些不常使用名称还有蚂蚁.自动索引.模拟程序或蠕虫. 随着网络的迅速发展,万维网成为大量信息的载体,如何有效提取并利用这些信息成为一个巨大挑战.搜索引擎 (Search Engine),譬如:传统搜索引擎 AltaVista.Yahoo!.Google.百度.360 搜索.好搜.搜狗.Bing 等作为辅助人们检索信息的工具,已成为用户访问万维网的入口和指南.但是

常见爬虫

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件. ? RBSE (Eichmann,1994)是第一个发布的爬虫.它有两个基础程序.第一个是“spider”,抓取队列中的内容到一个关系数据库中,第二个程序是“mite”,是一个修改后的www的ASCII浏览器,负责从网络上下载页面. ? WebCrawle

网络爬虫-原理篇(一)

 转自:http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html  有改动! 引入:我们在百度首页输入关键字,百度一下,相关的内容就会立马呈现出来,这个动作的背后到底隐藏着哪些操作? 其实百度的核心搜索引擎就是一个大型的分布式网络爬虫程序. 什么是网络爬虫? 详见: 1.百度百科 2. 维基百科 网络爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份.这篇博客主要对爬虫以及抓取系统进行一个简单的概述. 一.网

开源网络爬虫汇总

Awesome-crawler-cn 互联网爬虫,蜘蛛,数据采集器,网页解析器的汇总,因新技术不断发展,新框架层出不穷,此文会不断更新... 交流讨论 欢迎推荐你知道的开源网络爬虫,网页抽取框架. 开源网络爬虫QQ交流群:322937592 email address: liinux at qq.com Python Scrapy - 一种高效的屏幕,网页数据采集框架. django-dynamic-scraper - 基于Scrapy内核由django Web框架开发的爬虫. Scrapy-R