网络爬虫的基础知识

爬虫的概念

网络爬虫(web crawler),也叫做网络蜘蛛(spider), 是一种用来自动浏览万维网的网络机器人。如果我们将万维网比作一张网,每个网页就是其中的一个节点,节点之间的连线就是网页之间的链接关系,网络爬虫就是通过访问节点,获取了信息,并继续通过链接向下一个节点爬取,一步步获得整个网络的信息。

爬虫的分类

网络爬虫按照系统结果和实现技术,大致可以分为:

  • 通用网络爬虫
  • 聚焦网络爬虫
  • 增量式网络爬虫
  • 深层网络爬虫
    实际的网络爬虫系统通常是几种爬虫技术的集合
    通用网络爬虫又称全网爬虫,爬取的对象从一些种子URL扩充到整个web,爬行范围和数量巨大。适用于搜索引擎。
    聚焦网络爬虫也叫主题网络爬虫,会按照预先定义好的主题有选择的爬取网页,相比通用网络爬虫有很大的针对性,大大节省了资源,主要为某一类特定的人群提供服务。
    增量式网络爬虫,是指在根性的时候只更新改变的地方,而未改变的地方则不更新,能够一定程度上保证爬取的页面尽可能是新页面。
    深层网络爬虫, 可以爬取互联网中的深层页面。列如那些需要回复一定关键词才能访问,或需要登录才会出现的页面。这些深层页面是互联网上最大,发展最快的新型信息资源。

Robots协议

Robots协议的全称是“网络爬虫排除标准”,该协议是国际互联网界通行的道德规范,建议大家遵守,不做强制要求。

robots.txt文件

robots.txt通常存在于web服务器的顶级目录中,当爬虫想要爬取一个网页的时候,会首先检查robots.txt 文件。
robots.txt文件的用法:
精致网络爬虫访问网站的任何部分

User-agent: * # 允许所有的搜索引擎访问
Disallow: / # 不允许访问除规定以外的其他页面
# Disallow:  # 允许访问网站的任何部分

排除单个爬虫

User-agent: BadBot
Disallow: /

HTTP 基本原理

UTL和URI
uri 叫统一资源标志符,url叫统一资源定位符。一个链接既是一个URL也是URI,但有时URI不但定位资源还命名资源,而URL只定位资源。
超文本
超文本英文名叫:hypertext,我们在浏览器里面看到的网页是一系列的HTML代码,被浏览器解析之后便成了我们平常看到的网页,而网页的源代码HTML就可以称作超文本。
HTTP和HTTPS
网页链接的开头都会有http或https(列:https://mp.csdn.net),这是访问资源需要的协议类型。当然也有其他的,如:ftp、sftp、smb。但我们通常所遇到的就是http和https两种。
HTTP中文叫超文本传输协议,用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确的传输文本文档。
HTTPS是以安全为目标的HTTP通道,相当于就是HTTP的安全版,是在HTTP下加入了SSL层,所以叫HTTPS。

HTTP请求过程

我们在浏览器中输入一个网址之后,浏览器中便会出现内容,实际上这里面包含了一个请求、响应的过程。
请求
请求是由客服端像服务器发送的

  • 请求方法
    一般使用的请求的方法都是GET或POST,里面包含了我们想要传递给网页的一些参数。
  • 请求的网址
    请求的网址,即统一的资源定位符URL,它可以确保我们想要请求的资源局
  • 请求头
    请求头用来说明服务器要使用的附加信息,常用的有:Accept, Accept-Language, Accept-Encoding, Host, Cookie, Referer, User-Agent, Content-Type等
  • 请求体
    请求体一般承载post请求的表单数据,get请求的时候内容是为空的。
    响应
    响应是服务器接收到请求后返还给客户端的
  • 响应状态码
    响应状态码表示服务器的响应状态,如200表示服务器正常响应,404表示页面未找到,500表示服务器内部发生错误。
  • 响应头
    响应头包含了服务器对请求的应答信息,下面简单列举一些:
    Date:标识响应产生的时间
    Last-Modified : 指定资源的最后修改时间
    Content-Encoding : 指定响应内容的编码
    Server : 包含服务器的信息,比如名称,版本号等
    Content-Type : 文档类型,指定返回的数据类型是什么
    Set-Cookie : 设置Cookies。
    Expires : 指定响应的过期时间,可以使用代理服务器或浏览器将加载的内容更新到缓存中。再次访问的时候就可以直接从缓存中加载了。
  • 响应体

    响应的正文数据都在响应体中。在做爬虫时,我们主要就是通过响应来得到响应体,然后从中做相应内容的提取。

爬虫的基本原理

  • 获取网页
    爬虫首先要做的就是获取网页,这里就是获取网页的源代码。前面讲了请求和响应的概念,Python的很多库就可以帮助我们发送一个请求并得到响应的内容,如:urllib, requests等
  • 提取信息
    获取网页源码后,接下来就是分析网页源码,从中提取出我们想要的数据。通常使用正则表达式、css选择器、XPath等来提取网页信息
  • 保存数据
    提取信息后我们一般会将提取到的数据保存到一个地方以便后续使用。
  • 自动化程序
    自动化程序意思是说爬虫可以代替人来完成这些操作,当处理数据的量特别大的时候,我们就需要借助爬虫来代替我们处理,爬虫就是这个自动化程序。

代理的基本原理

  • 基本原理
    代理指的是代理服务器,英文叫 proxy server,它的功能是代理网络用户去取得网络信息。它就像一个中间商,我们把请求发给它,由它去帮我们获取信息,获取到了之后再发送给我们。

  • 代理的作用

    • 突破自生限制,访问一些平时你本身不能访问的站点。
    • 访问一些单位或团体的内部资源。
    • 提高访问速度,通常代理都设有较大的缓冲区,外界信息通过时都会存到缓冲区里面,当用户再次访问时就可以直接从缓冲区中取出信息。
    • 隐藏真是IP,通过代理的方式可以隐藏我们真实的IP,避免受到攻击。对于爬虫来说很有必要隐藏自身IP,避免IP被封。
  • 代理分类

    • FTP代理服务器,主要用于访问FTP服务器,一般有上传,下载以及缓存的功能,端口一般是21、2121.
    • HTTP代理服务器,主要用于访问网页,一般有内容过滤和缓存的功能,端口一般是80、8080、3128.
    • SSL/TLS代理,主要用于访问加密网站,一般有SSL或TLS加密功能,端口一般是443
    • Telnet代理,主要用于telnet远程控制(黑客入侵计算时常用语隐藏省份),端口一般是23
    • POP3/SMTP代理,主要用于POP3/SMTP方式收发邮件,一般具有缓存功能,端口一般是110/25.
    • SOCKS代理,只是单纯的传递数据包,不关心协议和用法,所以速度很快,分为SOCKS4和SOCKS45,端口一般是1080

@快乐是一切

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值