爬虫及爬行方式

爬虫有很多名字,比如web机器人、spider等,它是一种可以在无需人类干预的情况下自动进行一系列web事务处理的软件程序。web爬虫是一种机器人,它们会递归地对各种信息性的web站点进行遍历,获取第一个web页面,然后获取那个页面指向的所有的web页面,依次类推。因特网搜索引擎使用爬虫在web上游荡,并把他们碰到的文档全部拉回来。然后对这些文档进行处理,形成一个可搜索的数据库。简单来说,网络爬虫就是搜索引擎访问你的网站进而收录你的网站的一种内容采集工具。例如:百度的网络爬虫就叫做BaiduSpider。

  • 搜索引擎的爬虫工作原理

    网络 < --- > 爬虫 < --- > 网页内容库 < --- > 索引程序 < --- > 索引库 < --- > 搜索引擎 < --- > 用户

爬虫程序需要注意的地方

  • 链接提取以及相对链接的标准化

    爬虫在web上移动的时候会不停的对HTML页面进行解析,它要对所解析的每个页面上的URL链接进行分析,并将这些链接添加到需要爬行的页面列表中去。关于具体的方案我们可以查阅这篇文章

  • 避免环路的出现

    web爬虫在web上爬行时,要特别小心不要陷入循环之中,至少有以下三个原因,环路对爬虫来说是有害的。
  1. 他们会使爬虫可能陷入可能会将其困住的循环之中。爬虫不停的兜圈子,把所有时间都耗费在不停获取相同的页面上。
  2. 爬虫不断获取相同的页面的同时,服务器段也在遭受着打击,它可能会被击垮,阻止所有真实用户访问这个站点。
  3. 爬虫本身变的毫无用处,返回数百份完全相同的页面的因特网搜索引擎就是这样的例子。

    同时,联系上一个问题,由于URL“别名”的存在,即使使用了正确的数据结构,有时候也很难分辨出以前是否访问过这个页面,如果两个URL看起来不一样,但实际指向的是同一资源,就称为互为“别名”。
  • 标记为不爬取

    可以在你的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被蜘蛛访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎访问和收录了,或者可以通过robots.txt指定搜 索引擎只收录指定的内容。搜索引擎爬行网站第一个访问的文件就是robot.txt。同样也可以把链接加上rel="nofollow"标记。

  • 避免环路与循环方案
  • 规范化URL
  • 广度优先的爬行

    以广度优先的方式去访问就可以将环路的影响最小化。
  • 节流

    限制一段时间内爬虫可以从一个web站点获取的页面数量,也可以通过节流来限制重复页面总数和对服务器访问的总数。
  • 限制URL的大小

    如果环路使URL长度增加,长度限制就会最终终止这个环路
  • URL黑名单
  • 人工监视

搜索引擎优化

搜索引擎优化也叫SEO,了解了web爬虫的工作方式于原理之后对SEO会有更好的认识,对于前端开发,需要注意的SEO有以下内容:

  • 突出重要内容

    合理的title、description和keywords

    虽然现在搜索对这三项的权重慢慢减小,但还是希望能够合理的写好他们,只写有用的东西,不要在这里写小说,要表达重点。

    title:只强调重点即可,重要关键词出现不要超过2次,而且要靠前,每个页面title要有所不同description:把网页内容高度概括到这里,长度要合理,不可过分堆砌关键词,每个页面description要有所不同,keywords:列举出几个重要关键词即可,也不可过分堆砌。
  • 语义化书写HTML代码,符合W3C标准

    对于搜索引擎来说,最直接面对的就是网页HTML代码,如果代码写的语义化,搜索引擎就会很容易的读懂该网页要表达的意思。
  • 利用布局,把重要内容HTML代码放在最前

    搜索引擎抓取HTML内容是从上到下,利用这一特点,可以让主要代码优先读取,让爬虫最先抓取
  • 重要内容不要用JS输出

    爬虫不会读取JS里的内容,所以重要内容必须放在HTML里
  • 尽少使用iframe框架

    搜索引擎不会抓取到iframe里的内容,重要内容不要放在框架中。
  • 为图片加上alt属性

    alt属性的作用是当图片无法显示时以文字作为代替显示出来,对于SEO来说,它可以令搜索引擎有机会索引你网站的图片。
  • 需要强调的地方可以加上title属性

    在进行SEO优化时,适合将alt属性设置为图片本来的含义,而将 ttitle属性为设置该属性的元素提供建议性的信息。
  • 为图片加上长宽

    图片大的会排在前面一点。
  • 保留文字效果

    如果需要兼顾用户体验和SEO效果,在必须用图片的地方,例如个性字体的标题,我们可以利用样式控制,让文本文字不会出现在浏览器上,但在网页代码中是有该标题的。

    注意:不可使用display:none;的方法让文字隐藏,因为搜索引擎会过滤掉display:none;里边的内容,就不会被蜘蛛检索了。
  • 提高网站速度

    网站速度是搜索引擎排序的一个重要指标
  • 对于指向外部网站的链接要使用rel="nofollow"属性告诉爬虫不要去爬其他的页面

网络爬虫与搜索引擎优化(SEO)的更多相关文章

  1. 网络爬虫与搜索引擎优化(SEO)

    一.网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  2. 基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎 网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并 ...

  3. 网站优化不等于搜索引擎优化SEO

    对于SEO相信搞网络营销的人基本上都知道这个名词,英文全称为search engine optimization,中文一般叫搜索引擎优化,也有的叫搜索引擎定位(Search Engine Positi ...

  4. 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...

  5. 网站搜索引擎优化SEO策略及相关工具资源

    网站优化的十大奇招妙技 1. 选择有效的关键字: 关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步.选择关键字的一个重要的技巧是选取那些常为人们在搜索时所用到的关键字. ...

  6. 【架构】基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...

  7. WordPress博客系统搜索引擎优化seo全攻略方法

    WordPress的文章.评论等很多数据都是存放在数据库的,所以搭建wordpress网站的时间,网站的空间不需要多大,而数据库一定要充足,而在WordPress数据库中主要使用 wp_posts 表 ...

  8. 网站搜索引擎优化(SEO)的18条守则

    1.永远不要放过网页的title,这个地方应该是你每次优化的重点. 2.请不要在title,deion,keyword里写太多东西,越是贪婪,得到的就越少. 3.网页的头部和底部是很重要的,对于搜索引 ...

  9. 前端里面如何进行搜索引擎优化(SEO)

    如何进行SEO优化: (1) 避免head标签js堵塞: 所有放在head标签里面的js和css都会堵塞渲染:如果这些css和js需要加载很久的话,那么页面就空白了: 解决办法:一是把script放到 ...

随机推荐

  1. laravel database的事务函数

    laravel的事务使用如下: DB::connection('gvideo')->transaction(function () use ($user_id, $video_id, $acti ...

  2. 为什么无线信号(RSSI)是负值(转)

    源:为什么无线信号(RSSI)是负值 为什么无线信号(RSSI)是负值 答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了.因为无线信号多为mW级别,所以对它进行了极化,转化为dBm ...

  3. 谈谈MySQL数据表的类型(转)

    谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...

  4. backup-mysql.sh

    #!/bin/bash#auto backup mariadb#xuegod 2015-12-30#Define PATH 定义变量date=`date +%Y-%m-%d`BAKDIR=" ...

  5. Django performance

    Reference: https://impythonist.wordpress.com/2016/02/21/building-high-performance-django-systems/ Th ...

  6. numpy 安装

    sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matp ...

  7. CentOS6.5编译安装Redis

    一.首先要检测是否安装gcc yum install gcc-c++ yum install -y tcl 进入redis目录 cd /usr/local/redis .编译安装 make make ...

  8. Mysql表锁、行锁、页锁

    参考 http://www.jb51.net/article/50047.htm <MySQL行级锁.表级锁.页级锁详细介绍> 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住 ...

  9. PHP使用array_intersect()函数求数组交集

    在PHP中求数组的交集,我们可以与PHP给我们提供的现成函数:array_intersect(),其用法格式为: array array_intersect(array array1,array ar ...

  10. sqlite3命令行

    1.查看版本信息 sqlite3 -verion 2.创建/打开数据库 sqlite3 数据库名 例:sqlite3 test.db 如果test.db不存在就创建 如果存在,则打开3.退出 .q/. ...