爬虫相关知识

目录

为了更好地在爬虫编写上获得更好地效果,现有必要在爬虫的知识上进行补充,本文将在

  1. 爬虫相关协议
  2. 爬虫架构
    上进行一定的解释

爬虫相关协议

  1. Robots协议
    作为一个爬虫程序,在爬取互联网资源时会对对方服务器的资源进行一定量的消耗,特别是多线程爬虫,在爬取网站资源时会使用很多Session进行连接,这个行为在一定程度上很容易导致网站瘫痪,还有就是有些网站有着自己不想让人访问的页面,如果爬虫随意进行抓取,相当于侵犯了网站的隐私。针对这种现象,互联网行业主要采取了两种办法来进行防范:
    1. 在网站更目录下放置robots.txt文件来规定哪些文件不想被抓取以及哪些爬虫不允许运行。
      robots.txt文件主要包含两块内容:User-agent和Disallow.
      User-agent主要规定了后续的disallow规则适用于何种爬虫,如果User-agent的值被设为*,那就意味着改disallow适用于所有的爬虫
      Disallow的内容为网站创建者不愿意让爬虫爬取的页面如果Disallow后面的内容为简单的\,那就意味着网站不允许爬虫爬取所有的网页。
      一个robots.txt例子为
User-agent:Baiduspider
Allow:/
Disallow:/w?
User-agent:Googlebot
Allow:/
User-agent:MSNBot
Allow:/
User-agent:*
Disallow:/
  1. Robots Meta
    除了在根目录下创建robots.txt,我们也可以在网页源代码中的head标签页中专门告诉爬虫如何来抓取网页内容
    robots meta主要有两种内容:name和content。name用来规定后面的content适用于何种爬虫,例如name="Robots"表示后续的content内容适用于所有的爬虫。Content部分主要分为4个指令选项:INDEX, NOINDEX, FOLLOW, NOFOLLOW.
    INDEX指令将告诉爬虫要抓取该页面
    FOLLOW指令将告诉爬虫可以沿着页面上的链接继续抓取下去
    如此看来,对于同一种爬虫,它将面临4种不同的情况:
<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"> \\也可以写成<META NAME="ROBOTS" CONTENT="ALL">
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"> \\也可以写成<META NAME="ROBOTS" CONTENT="NONE">

当然,我们的互联网领头大哥Google在这方面有着不同凡响的建树,现在的大部分爬虫对于Robots Meta的支持其实并不好,但Google完全支持该协议并且新增了一个新的指令archive,可以限制Google是否保留网页快照,例如:

<META NAME="googlebot" CONTENT="index,follow,noarchive">

这段指令意味着谷歌不能保留该页面的网页快照

爬虫架构

网络爬虫主要分为分布式爬虫架构以及垂直爬虫架构,看起来十分的高大上,但在仔细了解后发现这其实非常简单

  1. 分布式爬虫架构
    所谓分布式,意思就是将一个大型任务分配到不同人头上,例如北京的爬虫爬取距离自己最近的节点——北京,上海的爬虫爬取距离自己最近的节点——上海,也可以这样分配:电信网络的爬虫爬取托管在电信网络中的网站,联通网络的爬虫爬取托管在联通网络中的网站。一般来讲,这样的爬虫结构都会有一个主控服务器,假如一个爬虫在爬取时遇到了不属于自己任务范围内的网站,它将会上报该网站至主控服务器,然后主控服务器会将该网站重新分配至应该为此负责的爬虫上,同时,为了防止一个爬虫宕机,一般会设置一个镜像爬虫共同爬取同一个网站。
  2. 垂直爬虫架构
    看完了分布式,我相信理解垂直爬虫结构也不算什么难事,就是对同一个网站站点进行深层的挖掘,垂直爬虫的功能主要分为:
    1. 从首页提取不同栏目的列表页
    2. 将网页进行分类
    3. 提取网页列表中的链接,例如大多数网页都有的翻页,http://…&_pgn=2中的“_pgn”就为翻页参数
    4. 详细内容的提取,也就是网页正文内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值