广告
返回顶部
首页 > 资讯 > 后端开发 > Python >爬虫的基本原理
  • 381
分享到

爬虫的基本原理

爬虫基本原理 2023-01-30 22:01:59 381人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

爬虫是什么?如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站

爬虫是什么?

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的html代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;



爬虫概述

简单来说,爬虫就是获取网页并提取和保存信息的自动化程序


1 获取网页

获取网页的源代码,提取想要的信息,python 提供了许多库来帮助我们实现这个操作,如 urllib, requests等


2 提取信息

使用CSS 选择器或 XPath, re(正则)提取网页信息的库,如 Beautiful Soup pyquery lxml等,使用这些库,可以高效快速地从中提取网页信息,如节点的属性 文本值等, 提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得条理清晰 ,以便我们后续处理和分析数据


3 保存数据

这里保存形式有多种多样,如可以简单保存为 txt 文本或 jsON 文本,也可以保存到数据库,如 Mysql, mongoDB, Redis,也可保存至远程服务器.


4 自动化程序

爬虫就是代替我们来成这份爬取工作的自动化程序,它可以在抓取过程中进行各种异常处理、错误重试等操作 ,确保爬取持续高效地运行


爬虫能抓怎样的数据?

各种二进制数据,如图片 、视频和音频等 利用爬虫,我们可以将这些二进制数据抓取下来,然后保存成对应的文件名,上述内容其实都对应各自的 URL 是基于 Httphttps协议的,只要是这种数据,爬虫都可以抓取。


基于JavaScript 渲染的页面怎么抓取?

在用urllib或requests抓取网页时,得到的源代码实际和浏览器中看到的不一样,现在网页越来越多地采用 ajax前端模块化工具来构建,整个网页可能都是由 javascript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳。

js怎么实现的渲染?

首先加载html内容,接着浏览器会发现其中引人了一个app.js 文件,然后便会去请求这个文件,获取到该文件后,执行其中的 JavaScript 代码,而JavaScript则会改变HTML中的节点,向其添加内容,最后得到完整的页面.

在用urllib, requests等库请求当前页面时,得到的只是这个 HTML代码,它不会去加载这个 JavaScript 文件,这样也就看不到浏览器中的内容了。

对于这样的情况,可以分析其后台 Ajax 接口,也可使用 Selenium,Splash 这样的库来实现模拟 JavaScript 渲染,继而抓取数据


会话和Cookies

在访问网站的时候,经常遇到需要登录的情况,有些页面只有登录之后才可以访问 ,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录,还有一些网站,在打开浏览器时就向动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及会话Session和 Cookies 的相关知识


无状态 HTTP

HTTP的无状态是指 HTTP 协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么状态。向服务器发送请求,服务器解析此请求,然后返回对应的响应,服务器负责完成这个过程,而且这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录,如果后续需要处理之前的信息,那么就必须重传,太浪费资源.

这时两个用于保持 HTTP连接状态的技术就出现了,分别是Session和 Cookies 会话在服务端,也就是网站的服务器,用来保存用户的会话信息; Cookies 在客户端,也可以理解为浏览器端,有了Cookies ,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别 Cookies 并鉴定出是哪个用户,然后再判断用户是否是登录状态,然后返回对应的响应,可以理解为 Cookies 里面保存了登录的凭证,有了它,只需要在下次请求携带 Cookies 发送请求而不必重新输入用户名、密码等信息重新登录了.

在爬虫中,有时候处理需要登录才能访问的页面时,一般会直接将登录成功后获取的Cookies 放在请求头里面直接请求,而不必重新模拟登录


会话

WEB 中,会话对象用来存储特定用户会话所需的属性及配置信息, 这样,当用户在应用程序的Web 页之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去当用户请求来自应用程序的 Web页时如果该用户还没有会话, 则Web服务器将自动创建一个会话对象,当会话过期或被放弃后,服务器将终 该会话


Cookies

Cookies 指某些网站为了辨别用户身份,进行会话跟踪而存储在用户本地终端上的数据.

在成功登录某个网站时,服务器会告诉客户端设置哪些Cookies 信息,在后续访问页面时客户端会把 Cookies 发送给服务器,服务器再找到对应的会话加以判断. 如果会话中的某些设置登录状态的变量是有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了。

反之,如果传给服务器的 Cookies 是无效的,或者会话已经过期了,我们将不能继续访问页面,此时可能会收到错误的响应或者跳转到登录页面重新登录.

Cookies 和会话需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登陆会话控制

属性结构:

看看Cookies都有哪些内容,以知乎为例:

blob.png

Name:该Cookie的名称,一旦创建,该名称便不可更改

Value:该Cookie 的值 ,如果值为 Unicode 字符,需要为字符编码 . 如果值为二进制数据,则需要使用 BASE64 编码

Domain:可以访问该Cookie的域名, 例如,如果设置为 zhihu.com ,则所有以 zhihu .com 结尾的域名都可以访问Cookie.

Max Age: 该Cookie 失效的时间, 单位为秒,也常和 Expires 一起使用,通过它可以计算出其有效时间。Max Age如果为正数 ,则该Cookie在Max Age 秒之后失效。如果为负数,则关闭浏览器时 Cookie 即失效,浏览器也不会以任何形式保存该 Cookie。

Path:该Cookie的使用路径。如果设置为/path/ ,则只有路径为/path/ 的页面可以访问该Cookie。如果设置为/,则本域名下的所有页面都可以访问该 Cookie。

Size:  此Cookie的大小

HTTP: Cookie的httponly属性。若此属性为 true ,则只有在 HTTP 头中会带有此Cookie 的信息,而不能通过 document.cookie 来访问此 Cookie。

Secure: 该Cookie 是否仅被使用安全协议传输。安全协议有 HTTPS和SSL 等,在网络上传输数据之前先将数据加密。默认为 false。


会话 Cookie 和持久 Cookie

会话 Cookie 就是把 Cookie 放在浏览器内存里,浏览器在关闭之后该 Cookie即失效; 持久 Cookie则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态。其实严格来说,没有会话 Cookie 和持久 Cookie之分,只是由Cookie的Max Age或Expires 字段决定了过期的时间。因此 一些持久化登录的网站其实就是把 Cookie 的有效时间和会话有效期设置得比较长, 下次再访问页面时仍然携带之前的 Cookie ,就可以直接保持登录状态。


代理的基本原理

做爬虫的过程巾经常会遇到这样的情况 最初爬虫正常运行,正常抓取数据,然而过一会可能会出现错误,比如 403 Forbidden,打开网页一看 ,可能会看到“您的 IP 访问频率太高”这样的提示。出现这种现象是因为网站采取了一些反爬虫策略,服务器会检测某个ip在单位时间内的请求次数,如果超过设定值,就会拒绝访问,也叫封ip。使用代理可以实现IP伪装。


基本原理

代理实际上指的就是代理服务器,英文叫作 proxy server,是网络信息的中转站, 如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥, 此时本机不是直接向Web 服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给 Web服务器,接着由代理服务器再把 Web服务器返回的响应转发给木机。这样同样可以正常访问网页,但这个过程中 Web服务器识别出的真实 IP 就不再是本机的 IP 了,就成功实现了 IP伪装,这就是代理的基本原理。


代理的作用

代理有什么作用?举例说明:

突破自身 IP 访问限制,访问一些平时不能访问的站点。

访问一些单位或团体内部资惊 :比如使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类 FTP 下载上传,以及各类资料查询共享等服务。

提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度

隐藏丘实 IP: 上网者也可以通过这种方法隐藏自己的IP, 免受攻击, 对于爬虫来说,我们用代理就是为了隐藏自身 IP ,防止 向身的 IP被封。


爬虫代理

对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个 IP 访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封IP ,这样会给爬取带来极大的不便。使用代理隐藏真实的 IP ,让服务器误以为是代理服务器在请求自己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。


代理分类

代理分类时,既可以根据协议区分,也可以根据其匿名程度区分

1 根据协议区分

根据代理的协议,代理可以分为如下类别:

FTP 代理服务器: 主要用于访问 FTP 服务器, 一般有上传 下载以及缓存功能,端口一般为21, 2121等。

HTTP 代理服务器: 主要用于访问网页,一般有内容过滤和缓存功能,端口 般为 80,8080,3128等。

SSL/TLS 代理: 主要用于访问加密网站,一般有 SSL或TLS 加密功能(最高支持 128 位加密强度),端口一般为 443。

RTSP 代理: 主要用于访问 Real 流媒体服务器,一般有缓存功能,端口 般为 554。

Telnet 代理: 主要用于 telnet 远程控制(黑客人侵计算机时常用于隐藏身份),端口一般为 23。

POP3/SMTP 代理: 主要用于 POP3/SMTP 方式收发邮件,一般有缓存功能,端口一般为 110, 25。

SOCKS 代理: 只是单纯传递数据包,不关心具体协议和用法,所以速度快很,一般有缓存功能,端口一般为 1080。 SOCKS 代理协议又分为 SOCKS4和SOCKS5 ,前者只支持 tcp,而后者支持 TCP和UDP ,还支持各种身份验证机制、服务器端域名解析等。简单来说,SOCKS4 能做到的 SOCKS5 都可以做到,但 SOCKS5 能做到的 SOCKS4不一定能做到。


2 根据匿名程度区分

高度匿名代理: 会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的 IP 是代理服务器的 IP。

普通匿名代理: 会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。代理服务器通常会加入的HTTP头有 HTTP_VIA和HTTP_X_FORWARDED_FOR。

透明代理: 不但改动了数据包 还会告诉服务器客户端的真实 IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。

间谍代理: 指组织或个人创建的用于记录用户传输的数据,然后进行研究, 监控等目的的代理服务器。


常见代理设置

使用网上的免费代理: 最好使用高匿代理,另外可用的代理不多,需要在使用前筛选一下可用代理,也可以进一步维护一个代理池。

使用付费代理服务: 互联网上存在许多代理商,可以付费使用, 质量比免费代理好很多。

ADSL 拨号 :拨一次号换一次IP,稳定性高,也是一种比较有效的解决方案。





--结束END--

本文标题: 爬虫的基本原理

本文链接: https://www.lsjlt.com/news/179171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 爬虫的基本原理
    爬虫是什么如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点...
    99+
    2023-01-30
    爬虫 基本原理
  • Python爬虫基本原理
    看崔庆才爬虫教程视频做的笔记。 1.什么是爬虫? 请求网站并提取数据的自动化程序。 2.爬虫的基本流程 发送请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。 ...
    99+
    2023-01-30
    爬虫 基本原理 Python
  • 爬虫基本原理介绍、实现以及问题解决
    文章目录 一、爬虫的意义1.前言2.爬虫能做什么3.爬虫有什么意义 二、爬虫的实现1.爬虫的基础原理2.api的获取3.爬虫实现 三、反爬解决方案1.反爬的实现方式2.反爬的解决方法3...
    99+
    2023-09-02
    python 爬虫
  • 详解Python爬虫的基本写法
    什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。 比如它在...
    99+
    2022-06-04
    爬虫 写法 详解
  • Python爬虫之Urllib库的基本使
    # get请求 import urllib.request response = urllib.request.urlopen("http://www.baidu.com") print(response.read().decode('...
    99+
    2023-01-30
    爬虫 Python Urllib
  • Python爬虫获取基金基本信息
    目录1 前言2 如何抓取基本信息3 xpath 获取数据4 bs4 获取数据5 最终结果展现1 前言 上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表...
    99+
    2022-11-11
  • python爬虫爬取bilibili网页基本内容
    用爬虫爬取bilibili网站排行榜游戏类的所有名称及链接: 导入requests、BeautifulSoup import requests from bs4 import Be...
    99+
    2022-11-12
  • python爬虫的工作原理
    1.爬虫的工作原理 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常...
    99+
    2022-06-04
    爬虫 工作原理 python
  • 01_爬虫的基本概念和流程
    为什么我们要学习爬虫?学习爬虫有什么意义? 进行数据分析,可以爬取网站上面的数据,来进行数据分析 我们现在身处大数据时代,大数据的数据是怎么来的? 爬虫来获取(方法之一) 比如微博的微指数可以看热词的趋势 从官方下载 利用爬虫...
    99+
    2023-01-31
    爬虫 基本概念 流程
  • Python爬虫之requests库基本介绍
    目录一、说明二、基本用法:总结一、说明 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方...
    99+
    2022-11-13
  • 网络爬虫的原理介绍
    这篇文章主要介绍“网络爬虫的原理介绍”,在日常操作中,相信很多人在网络爬虫的原理介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网络爬虫的原理介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!认识浏览器...
    99+
    2023-06-02
  • 爬虫需要代理IP的基本要求是什么
    本篇内容介绍了“爬虫需要代理IP的基本要求是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在爬虫的过程中,我们经常会遇到很多网站采用防爬...
    99+
    2023-06-20
  • Python爬虫之BeautifulSoup的基本使用教程
    目录bs4的安装bs4的快速入门解析器的比较(了解即可)对象种类bs4的简单使用获取标签内容获取标签名字获取a标签的href属性值遍历文档树案例练习思路代码实现总结bs4的安装 要使...
    99+
    2022-11-13
  • python异步爬虫机制的原理
    python异步爬虫机制的原理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、说明默认情况下,在使用get请求时,会出现堵塞,需要很多时间等待,如果有很多请求url,速度会变...
    99+
    2023-06-15
  • Python网络爬虫之HTTP原理
    目录⭐️爬虫基础🌟HTTP 基本原理✨URI和 URL✨超文本✨HTTP 和HTTPS ✨HTTP 请求过程✨请求✨响应⭐️爬虫基础 在写爬虫之前,我们还需要了解一些基础知...
    99+
    2023-05-15
    Python网络爬虫HTTP原理 Python网络HTTP原理 Python HTTP原理
  • Python爬虫基础之爬虫的分类知识总结
    目录一、通用爬虫二、搜索引擎的局限性三、Robots协议四、请求与相应一、通用爬虫 通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目...
    99+
    2022-11-12
  • 详解Python网络爬虫功能的基本写法
    网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(...
    99+
    2022-06-04
    爬虫 写法 详解
  • python爬虫之请求模块urllib的基本使用
    目录前言urllib的子模块HttpResponse常用方法与属性获取信息urlli.parse的使用(一般用于处理带中文的url)✅爬取baidu官网HTML源代码✅添加请求头信息...
    99+
    2022-11-10
  • Python爬虫之Requests库的基
    1 import requests 2 response = requests.get('http://www.baidu.com/') 3 print(type(response)) 4 print(response....
    99+
    2023-01-30
    爬虫 Python Requests
  • Python爬虫的工作原理是什么呢
    本篇文章给大家分享的是有关Python爬虫的工作原理是什么呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。随着计算机、互联网、物联网、云计算等网络技术的飞速发展,网络信息呈爆炸...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作