`
footman265
  • 浏览: 118425 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

如何自己写一个网络爬虫

阅读更多

这里是维基百科对网络爬虫的词条页面。网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。

从技相来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事情。下面一个简单的流程:

 

在这里,我们只是说一下如何写一个网页抓取程序。

首先我们先看一下,如何使用命令行的方式来找开网页。

telnet somesite.com 80
GET /index.html HTTP/1.0
按回车两次

使用telnet就是告诉你其实这是一个socket的技术,并且使用HTTP的协议,如GET方法来获得网页,当然,接下来的事你就需要解析HTML文法,甚至还需要解析Javascript,因为现在的网页使用Ajax的越来越多了,而很多网页内容都是通过Ajax技术加载的,因为,只是简单地解析HTML文件在未来会远远不够。当然,在这里,只是展示一个非常简单的抓取,简单到只能做为一个例子,下面这个示例的伪代码:

取网页
for each 链接 in 当前网页所有的链接
{
        if(如果本链接是我们想要的 || 这个链接从未访问过)
        {
                处理对本链接
                把本链接设置为已访问
        }
}
require “rubygems”
require “mechanize”

class Crawler < WWW::Mechanize

  attr_accessor :callback
  INDEX = 0
  DOWNLOAD = 1
  PASS = 2

  def initialize
    super
    init
    @first = true
    self.user_agent_alias = “Windows IE 6″
  end

  def init
    @visited = []
  end

  def remember(link)
    @visited << link
  end

  def perform_index(link)
    self.get(link)
    if(self.page.class.to_s == “WWW::Mechanize::Page”)
      links = self.page.links.map {|link| link.href } - @visited
      links.each do |alink|
        start(alink)
      end
    end
  end

  def start(link)
    return if link.nil?
    if(!@visited.include?(link))
      action = @callback.call(link)
      if(@first)
        @first = false
        perform_index(link)
      end
      case action
        when INDEX
          perform_index(link)
        when DOWNLOAD
          self.get(link).save_as(File.basename(link))
        when PASS
          puts “passing on #{link}”
      end
    end
  end

  def get(site)
    begin
      puts “getting #{site}”
      @visited << site
      super(site)
    rescue
      puts “error getting #{site}”
    end
  end
end

上面的代码就不必多说了,大家可以去试试。下面是如何使用上面的代码:

require “crawler”

x = Crawler.new
callback = lambda do |link|
  if(link =~/\\.(zip|rar|gz|pdf|doc)
    x.remember(link)
    return Crawler::PASS
  elsif(link =~/\\.(jpg|jpeg)/)
    return Crawler::DOWNLOAD
  end
  return Crawler::INDEX;
end

x.callback = callback
x.start(”http://somesite.com”)

下面是一些和网络爬虫相关的开源网络项目

分享到:
评论

相关推荐

    自己动手写网络爬虫.pdf

    自己动手写网络爬虫(附光盘) 《自己动手写网络爬虫(附光盘)》介绍了网络爬虫开发中的关键问题与java实现。主要包括从互联网获取信息与提取信息和对web信息挖掘等内容。《自己动手写网络爬虫(附光盘)》在介绍...

    自己动手写网络爬虫PDF+源码

    总的来说,"自己动手写网络爬虫"是一个宝贵的学习资源,结合理论与实践,能够帮助读者从零开始掌握网络爬虫的开发技能,从而在数据分析和信息挖掘领域打下坚实的基础。通过学习和实践书中的内容,读者不仅可以提升...

    自己动手写网络爬虫光盘

    《自己动手写网络爬虫光盘》是一套深入浅出的教程,主要涵盖了网络爬虫的基础知识和技术。从章节命名可以看出,这套教程分为四大部分,分别对应Chap01到Chap04,逐步引导读者从零开始学习网络爬虫的构建。 Chapter ...

    《自己动手写网络爬虫》PDF书及源码

    《自己动手写网络爬虫》是一本由罗刚编著的专业书籍,主要针对对网络爬虫技术感兴趣的读者。这本书深入浅出地介绍了如何从零开始构建一个完整的网络爬虫项目,涵盖了从基础知识到高级技巧的全貌。网络爬虫是搜索引擎...

    自己动手写网络爬虫光盘文件

    《自己动手写网络爬虫光盘文件》是一个包含多个章节的资源集合,主要围绕网络爬虫这一主题展开。网络爬虫,又称网页抓取或数据爬取,是自动化地从互联网上搜集信息的一种技术。本资源包可能包含了从基础到进阶的爬虫...

    自己动手写网络爬虫+源码

    《自己动手写网络爬虫》是一本深入浅出的教程,旨在帮助读者理解网络爬虫的工作原理,并通过实践掌握编写网络爬虫的技术。这本书结合了理论与实践,提供了丰富的源码,让学习者能够直接动手操作,提升技能。在我们的...

    自己动手写网络爬虫

    《自己动手写网络爬虫》是一本面向初学者和爱好者的指南,旨在深入浅出地讲解如何构建自己的网络爬虫。网络爬虫是互联网时代的一种重要工具,它能自动化地从网页中抓取大量信息,为数据分析、搜索引擎优化、市场研究...

    自己动手写网络爬虫pdf 文件与源码

    通过这个"自己动手写网络爬虫"的学习资源,你将能够系统地学习这些知识点,并逐步成长为一名熟练的网络爬虫开发者。动手实践是提升技能的关键,因此一定要尝试编写和运行代码,解决实际问题,以此加深理解。

    自己动手写网络爬虫PDF+源码.zip自己动手写网络爬虫PDF+源码.zip自己动手写网络爬虫PDF+源码.zip自己动手写网络爬虫PDF+源码.zip

    《自己动手写网络爬虫》是一本专注于网络爬虫技术的书籍,旨在通过实践的方式让读者深入了解并掌握网络爬虫的开发。网络爬虫,又称网页蜘蛛或数据抓取工具,是互联网上自动搜集和处理信息的一种程序。它能够按照一定...

    自己手动写网络爬虫 随书光盘

    《自己动手写网络爬虫》是一本由罗刚编著的专业书籍,主要针对Java编程语言进行网络爬虫的实现。本书旨在帮助读者深入理解网络爬虫的工作原理,并通过实际编程练习提升技能。光盘附带的高效代码解决方案是书中的实践...

    自己动手写网络爬虫(完整版)

    综上所述,"自己动手写网络爬虫(完整版)"这一主题涵盖了从理解Web文档结构,到设计有效的链接聚类策略,再到编写和优化爬虫代码的整个过程。通过学习这些知识,你可以构建自己的网络爬虫,从互联网的海量信息中提取...

    自己动手写网络爬虫pdf+源代码

    《自己动手写网络爬虫》是一本面向实践的教程,旨在帮助读者深入理解网络爬虫的工作原理,并通过实际操作掌握其编写技术。该资源包括PDF格式的书籍和配套的源代码,为学习者提供了理论与实践相结合的学习环境。 ...

    自己动手写网络爬虫光盘文件10章

    《自己动手写网络爬虫光盘文件10章》是一份深入浅出的教程资源,旨在帮助学习者从零开始掌握网络爬虫的编写技术。网络爬虫是信息技术领域的一个重要分支,它允许我们自动化地从互联网上获取大量数据,为数据分析、...

    自己动手写网络爬虫.ptf(高清)

    《自己动手写网络爬虫》是一本面向初学者和爱好者的书籍,旨在引导读者深入了解网络爬虫的原理和实现过程。这本书以高清的PDF格式提供,适合电子阅读和学习。网络爬虫是互联网数据挖掘的重要工具,对于数据分析、...

    自己动手写网络爬虫 Java版

    《自己动手写网络爬虫 Java版》是一本深入浅出的教程,旨在引导读者了解搜索引擎技术并使用Java语言实现自己的网络爬虫项目。通过这本书,你可以掌握如何在互联网上抓取、处理和存储大量数据,进而创建一个功能完备...

    自己动手写网络爬虫源码2-2.zip

    《自己动手写网络爬虫源码2-2.zip》是一个包含网络爬虫源代码和相关章节的压缩包,主要用于帮助学习者深入理解网络爬虫的实现原理和编程技术。这个资源分为几个章节,包括`Chap06`、`Chap07`、`Chap08`、`Chap09`和`...

    用Python写网络爬虫

    用Python写网络爬虫PDF,Richard Lawson 著 李斌译 人民邮电出版社,网上下来仅供查询用,请购买正版书籍。

    用Python写网络爬虫_用Python写网络爬虫.pdf_

    《用Python写网络爬虫》是一本专注于介绍如何利用Python编程语言进行网络数据抓取的教程。这本书主要针对初学者,旨在帮助读者掌握Python的基本知识并应用到网络爬虫的实践中。通过学习这本书,读者可以了解到网络...

Global site tag (gtag.js) - Google Analytics