`
john2007
  • 浏览: 77842 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

基于python的crawler

阅读更多

考虑到垂直爬虫及站内搜索的重要性,重新思考一下项目爬虫的技术架构及实现方案。以前的垂直爬虫曾经使用过heritrix、htmlparser、nutch等,各有优缺点。尤其是要做垂直网站的定向爬取时候,并没有太好的方案,只能够做指定页面的定向解析,因此以前主要还是使用htmlparser的方案。

    考察垂直爬虫的几个原则:

  • 性能较高:较好支持多线程并发处理;支持异步、非阻塞socket;支持分布式爬取;爬取调度算法性能较高;内存使用效率较高,不要老是出现out of memory问题;
  • 架构优美:组件式设计式架构,扩展方便;架构设计精巧。至少值得花时间去学习架构设计思想。
  • 扩展方便:能够与现有框架较好集成;由于是垂直爬虫,需要针对不同的网页定制爬取规则集逻辑,需要能够方便测试,不要老是重新编译,因此最好支持python等脚本语言
  • 功能全面:内置支持ajax/javascript爬取、登录认证、深度爬取设置、类似heritrix的爬取过滤器(filter)、页面压缩处理等
  • 管理功能:提供爬虫管理接口,能够实时监控和管理爬取

   厌烦了基于java的爬虫方案,尤其是考虑到python在网络编程上的易用性,因此打算考察基于python做新版本爬虫的可行性,刚好把久不使用的python捡起来。

    整理了一下目前基于python的crawler,大致有如下一些现成的项目方案可供参考:

    Mechanizehttp://wwwsearch.sourceforge.net/mechanize/

    Twillhttp://twill.idyll.org/

    Scrapyhttp://scrapy.org

    HarvestManhttp://www.harvestmanontheweb.com/

    Ruyahttp://ruya.sourceforge.net/

    psilibhttp://pypi.python.org/pypi/spider.py/0.5

    BeautifulSoup + urllib2http://www.crummy.com/software/BeautifulSoup/

    比较之后,选择Scrapy作为重点考察学习对象,尽管没有Mechanize及Harvestman成熟,但从其架构来看,还是很有前途的,尤其是基于twisted高性能框架的架构,很有吸引力。

    看看Scrapy的架构:

 

scrapy_architecture1

Components

  • Scrapy Engine

    The engine is responsible for controlling the data flow between all components of the system, and triggering events when certain actions occur. See the Data Flow section below for more details.

  • Scheduler

    The Scheduler receives requests from the engine and enqueues them for feeding them later (also to the engine) when the engine requests them.

  • Downloader

    The Downloader is responsible for fetching web pages and feeding them to the engine which, in turns, feeds them to the spiders.

  • Spiders

    Spiders are custom classes written by Scrapy users to parse response and extract items (aka scraped items) from them or additional URLs (requests) to follow. Each spider is able to handle a specific domain (or group of domains). For more information see Spiders.

  • Item Pipeline

    The Item Pipeline is responsible for processing the items once they have been extracted (or scraped) by the spiders. Typical tasks include cleansing, validation and persistence (like storing the item in a database). For more information see Item Pipeline.

  • Downloader middlewares

    Downloader middlewares are specific hooks that sit between the Engine and the Downloader and process requests when they pass from the Engine to the downloader, and responses that pass from Downloader to the Engine. They provide a convenient mechanism for extending Scrapy functionality by plugging custom code. For more information see Downloader Middleware.

  • Spider middlewares

    Spider middlewares are specific hooks that sit between the Engine and the Spiders and are able to process spider input (responses) and output (items and requests). They provide a convenient mechanism for extending Scrapy functionality by plugging custom code. For more information see Spider Middleware.

  • Scheduler middlewares

    Spider middlewares are specific hooks that sit between the Engine and the Scheduler and process requests when they pass from the Engine to the Scheduler and vice-versa. They provide a convenient mechanism for extending Scrapy functionality by plugging custom code.

参考资料:

    http://doc.scrapy.org

    http://stackoverflow.com/questions/419235/anyone-know-of-a-good-python-based-web-crawler-that-i-could-use

    http://en.wikipedia.org/wiki/Web_crawler#Open-source_crawlers

    http://java-source.net/open-source/crawlers

http://chuanliang2007.spaces.live.com/blog/cns!E5B7AB2851A4C9D2!795.entry

分享到:
评论
1 楼 john2007 2010-07-01  
mark lxml and beautifulsoup

相关推荐

    基于Python的旅游网站数据爬虫研究

    借助 Python 和 Scrapy 语言框架基础,以“旅游网站”为爬取目标,通过分析当前现有Web crawler 的运行机理、功能单元以及算法程序,试探性的创建一个针对性比较强的网络爬虫,对课题的目标数据...基于Python的旅游网站

    基于Python网络爬虫毕业论文.doc

    ### 基于Python网络爬虫毕业论文的关键知识点解析 #### 一、网络爬虫概述 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种按照一定规则自动抓取互联网上的信息的程序或者脚本。在大数据时代背景下,...

    基于Python的病毒数据爬取系统

    基于Python的病毒数据爬取系统 基于Python的病毒数据爬取系统 基于Python的病毒数据爬取系统 # virus_data_crawler #### 介绍 基于Python的病毒数据爬取系统 #### 软件架构 后端:flask框架 前端:layui+layuimini...

    基于Python的网络爬虫技术

    1基于Python的网络爬虫 网络爬虫又称网络蜘蛛,或网络机器人。网络爬虫通过网页的 链接地址来查找网页内容,并直接返回给用户所需要的数据,不需 要人工操纵浏览器获取。脚daon是一个广泛使用的脚本语言,其自 带了...

    基于Python的企查查爬虫,爬取完整的公司数据+源代码+文档说明

    基于Python的企查查爬虫,爬取完整的公司数据 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过...

    基于Python的网络爬虫技术研究

    根据给出的文件内容,下面详细说明关于基于Python的网络爬虫技术研究的相关知识点。 ### 1. 网络爬虫系统需求的分析和设计 在研究网络爬虫技术时,首先需要对爬虫系统进行需求分析和设计。根据文件内容描述,一个...

    基于python 编写的DHT Crawler 网络爬虫,抓取磁力链接

    磁力链接 基于python 编写的DHT Crawler 网络爬虫,抓取磁力链接 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    基于Python的网页信息爬取技术研究.pdf

    基于Python的网页信息爬取技术研究涉及网络爬虫(Web Crawler)的构建与应用,是互联网数据挖掘领域的重要分支。研究使用了Python编程语言,并主要依托BeautifulSoup库来实现高效、准确的信息抓取。以下是该领域研究...

    PythonCrawler-Scrapy-Mysql-File-Template, scrapy爬虫框架模板,将数据保存到Mysql数据库或者文件中。.zip

    本文将深入探讨一个基于Python的开源爬虫框架——Scrapy,以及如何利用它来构建爬虫项目,将抓取的数据存储到MySQL数据库或文件中。Scrapy是一个强大的、高效的爬虫框架,广泛应用于网页数据抓取和信息提取。 ### ...

    基于python的网络爬虫简单实现

    ### 基于Python的网络爬虫简单实现 #### 一、网络爬虫技术概览 ##### 1.1 网络爬虫的基本概念 网络爬虫(Web Crawler),也被称作网络蜘蛛或机器人,是一种自动化工具,用于访问互联网上的网页并从中抓取数据。...

    基于Python和HTML的Baidu Game Crawler设计源码

    该项目是一款基于Python和HTML的百度游戏爬虫设计源码,总文件量为101个,涵盖64个Python源代码文件、8个文本文件、4个Markdown文件、4个XML文件、3个Git忽略文件、2个YAML文件、2个JSON文件、1个IML文件、1个配置...

    基于python的聚焦网络爬虫数据采集系统设计与实现.pdf

    ### 基于Python的聚焦网络爬虫数据采集系统设计与实现 #### 一、引言 随着互联网的快速发展和普及,数据已经成为现代社会的核心资源之一。为了高效地从海量网络数据中提取有价值的信息,网络爬虫技术应运而生。...

    基于Python的新浪微博数据爬虫

    基于Python的新浪微博数据爬虫_周中华基于Python的新浪微博数据爬虫_周中华

    基于python的反爬虫技术的研究源码数据库论文.docx

    基于python的反爬虫技术的研究源码数据库论文 本文主要研究了基于Python的反爬虫技术,旨在解决当前网络信息泛滥、重复信息堆积的问题。通过结合Django和Python技术,设计了一款网站,并使用Python进行数据爬取操作...

    基于python实现开发的小说推荐系统源码+超详细注释(高分课程设计).zip

    基于python实现开发的小说推荐系统源码+超详细注释(高分课程设计).zip本资源是个人98分课程设计项目,是经过本地编译过可运行的。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,...

    基于Python的B站弹幕采集程序(逆向)

    基于Python的B站弹幕采集程序(逆向) B站弹幕采集(逆向) 弹幕接口URL的请求参数是被加密的,经过分析之后发现是MD5加密。 用Python直接构造一个加密的参数 安装教程 pip install httpx[http2] 使用说明 找到...

Global site tag (gtag.js) - Google Analytics