Python爬虫概述

1. 什么是网络爬虫

网络爬虫是指按照某种规则在网络上爬取所需内容的脚本程序。每个网页通常包含其他网页的入口,网络爬虫则是通过一个网址依次进入到网站,模拟客户端发送网络请求,接收请求响应,按照一定的规则,自动地抓取互联网信息的程序。

2. 爬虫分类

通用爬虫:是捜索引擎抓取系统(如Baidu)的重要组成部分,目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

爬取步骤:

  • 第一步:抓取网页
  • 第二步:数据存储
  • 第三步:预处理
  • 第四步:提供检索服务,网站排名

局限性:

  • 通用搜索引擎所返回的结果都是网页,而大多情况下,网页里90%的内容对用户来说都是无用的。
  • 不同领域、不同背景的用户往往具有不同的检索目的和需求,搜索引擎无法提供针对具体某个用户的搜索结果。
  • 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎对这些文件无能为力,不能很好地发现和获取。
  • 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询,无法准确理解用户的具体需求。

聚焦爬虫:在对网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。

增量式爬虫:用来监测网站数据更新情况,以便于爬取网站最新的数据。

分布式爬虫:提高爬虫效率的终极武器

3. 网络爬虫引发的问题

根据网络爬虫的尺寸分为三类:

爬取目的规模常用库
爬取网页 玩转网页小规模,数据量小,爬取速度不敏感(90%)Requests库
爬取网站 爬取系列网站中规模,数据规模大,爬取速度敏感(如携程)Scrapy库
爬取全网大规模,用于建立搜索引擎,爬取速度关键(如Google)定制开发

获得网络资源的同时也引发了一系列问题:

  • 骚扰问题:对网站正常运行带来骚扰,给Web服务器带来巨大的资源开销
  • 法律风险:服务器上的数据是由产权归属的,网络爬虫获取数据后牟利将带来法律风险
  • 隐私泄露:具备一定突破简单访问控制的能力,获得被保护数据从而泄露个人隐私

网络爬虫限制

  • 来源审查:通过判断User-Agent进行限制。检查来访HTTP协议偷的User-Agent域,只响应浏览器或者友好的爬虫访问。
  • 发布公告:Robots协议。告诉爬虫策略,要求爬取数据者遵守规定的数据,是否遵守则要看爬虫者。

4. HTTP/HTTPS的请求与响应

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一种发布和接收HTML页面的方法。

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是HTTP的安全版,在HTTP下加入SSL层。SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。

HTTP的端口号为80,HTTPS的端口号为443

URL格式:scheme://host[:port#]/path/…/[?query-string][#anchor]

  • scheme:协议(例如:http, https, ftp)
  • host:服务器的IP地址或者域名
  • port#:服务器的端口(如果是走协议默认端口,缺省端口80)
  • path:访问资源的路径
  • query-string:参数,发送给http服务器的数据
  • anchor:锚(跳转到网页的指定锚点位置)

例:http://www.baidu.com

  • scheme:http
  • port#:http://www.baidu.com

URL的理解:URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

4.1 请求方法

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。

HTTP请求主要分为Get和Post两种方法:GET是从服务器上获取数据,POST是向服务器传送数据

  • GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即“Get”请求的参数是URL的一部分。例如:http://www.baidu.com/s?wd=Chinese
  • POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码,

4.2 常用的请求报头

名称说明
Host (主机和端口号)用于指定被请求资源的Internet主机和端口号,属于URL的一部分
Connection (链接类型)表示客户端与服务连接类型
Upgrade-Insecure-Requests (升级为HTTPS请求)升级不安全的请求,意思是会在加载http资源时自动替换成https请求
User-Agent (浏览器名称)客户浏览器的名称
Accept (传输文件类型)指浏览器或其他客户端可以接受的件类型,服务器可以根据它判断并返回适当的文件格式
Accept-Encoding(文件编解码格式)指出浏览器可以接受的编码方式
Accept-Charset(字符编码)指出浏览器可以接受的字符编码
Cookie (Cookie)浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能
Content-Type (POST数据类型)POST请求里用来表示的内容类型

4.3 服务端响应状态码

类型说明
100-199表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程
200-299表示服务器成功接收请求并已完成整个处理过程。常用200(OK 请求成功)
300-399为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)
400-499客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)
500-599服务器端出现错误,常用500(请求未完成。服务器遇到不可预知的情况)

5. Robots协议

Robots协议(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,例如:

淘宝Robots协议分析

  • User-agent: Baiduspider
  • Disallow: /
  • User-agent: baiduspider
  • Disallow: /

Robots协议基本语法

  • " * “代表所有 ,” / "表示根目录
  • User-agent:表示允许哪些爬虫
  • Disallow:不允许爬虫访问的资源目录

Robots协议的使用

  • 网络爬虫:自动或者人工识别robots.txt,再进行内容爬取
  • 约束性:Robots协议是建议但非约束性,网络爬虫课以不遵守,但存在法律风险

对Robots协议的理解

爬取目的是否遵守
爬取网页 玩转网页可以遵守(访问量较小)、建议遵守(访问量较大)
爬取网站 爬取系列网站非商业且偶尔(建议遵守)、商业利益(必须遵守)
爬取全网必须遵守
类人类访问的爬取(资源都是为人类提供信息、且数据量小,次数少)可以不参考Robots协议

6. 反爬策略

反爬机制:作用于门户网站。如果网站不想让爬虫轻易获取数据,通过制定相关机制来阻值爬虫程序获取数据。

反反爬策略:作用于爬虫程序中。我们可以制定相关策略破解反爬机制从而获取数据。

7. 爬虫基本流程

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

而又何羡乎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值