Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爬虫的基本原理

爬虫的基本原理

作者头像
py3study
发布于 2020-01-20 03:27:19
发布于 2020-01-20 03:27:19
1.7K07
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:7
代码可运行

爬虫是什么?

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

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

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

爬虫概述

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

1 获取网页

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

2 提取信息

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

3 保存数据

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

4 自动化程序

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

爬虫能抓怎样的数据?

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

基于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都有哪些内容,以知乎为例:

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,稳定性高,也是一种比较有效的解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/08/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬虫的基本原理
我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。
仲君Johnny
2024/02/03
4260
Python爬虫的基本原理
代理的基本原理
我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。 既然服务器检测的是某个IP单位时间的请求次数,那么借助某种方式来伪装我们的IP,让服务器识别不出是由
崔庆才
2018/06/25
2.1K0
HTTP基本原理
在本节我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入一个 URL 到获取网页内容发生了一个怎样的过程,了解了这些内容,有助于去进一步了解爬虫的基本原理。 1. URI、URL 在了解 HTTP 之前我们先了解一下 URI 和 URL。我们经常会听到 URI 和 URL 两个术语,URI 全称为 Uniform Resource Identifier,即统一资源标志符,URL 全称为 Universal Resource Locator,即统一资源定位符。 举例来说,https://github.
崔庆才
2018/04/04
1.4K0
HTTP基本原理
Python爬虫http基本原理
在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。
仲君Johnny
2024/02/02
2490
Python爬虫http基本原理
一文带你了解Python爬虫(一)——基本原理介绍
1. 企业生产的用户数据: 大型互联网公司有海量用户,所以他们积累数据有天然的优势。有数据意识的中小型企业,也开始积累的数据。 2. 数据管理咨询公司: 通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、问卷调查、固定的样本检测, 和各行各业的公司进行合作、专家对话(数据积累很多年了,最后得出科研结果)来采集数据。 3. 政府/机构提供的公开数据: 政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。 4. 第三方数据平台购买数据: 通过各个数据交易平台来购买各行各业需要的数据,根据获取难度不同,价格也会不同。 5. 爬虫爬取数据: 如果市场上没有我们需要的数据,或者价格太高不愿意买, 那么就可以招/做一个爬虫工程师,从互联网上定向采集数据。
诡途
2020/10/16
4.1K0
数据采集技术python网络爬虫_精通Python网络爬虫
网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页的内容。 爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动化脚本。
全栈程序员站长
2022/09/27
1.9K0
数据采集技术python网络爬虫_精通Python网络爬虫
爬虫为啥需要大量的ip_简述网络爬虫的工作原理
爬虫工作者在试用爬虫进行数据搜集的过程中经常会遇到这样的情况,刚开始的时候爬虫的运行情况是正常的,数据的抓取状况也在有条不紊的进行着,然而可能你一眼照顾不到就会出现错误,比如403 Forbidden,这时候你打开网页的话,网页上面会提示你,“您的IP访问频率太高”这样的字眼。出现这种现象的原因就是被访问网站采取了反爬虫机制,比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。
全栈程序员站长
2022/11/10
4910
Python3网络爬虫实战-19、代理基
我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到“您的 IP 访问频率太高”这样的提示。出现这样的现象的原因是网站采取了一些反爬虫的措施,比如服务器会检测某个 IP 在单位时间内的请求次数,如果超过了这个阈值,那么会直接拒绝服务,返回一些错误信息,这种情况可以称之为封 IP,于是乎就成功把我们的爬虫禁掉了。
py3study
2020/01/03
6040
初识爬虫必须要了解的基本原理
在写爬虫之前,我们还需要了解一些基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理 、 Cookies 的基本原理等。
数据森麟
2021/03/09
3080
初识爬虫必须要了解的基本原理
Python爬虫之requests模块了解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTDA4Hje-1599297042880)(.\images\requests-3-2-1-4.png)]
海仔
2020/09/08
1.7K0
Python爬虫之requests模块了解
Session和Cookies的基本原理
在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及Session和Cookies的相关知识,本节就来揭开它们的神秘面纱。 一、静态网页和动态网页 在开始之前,我们需要先了解一下静态网页和动态网页的概念。这里还是前面的示例代码,内容如下: <!DOCTYPE html> <html> <head>
崔庆才
2018/04/08
9420
Session和Cookies的基本原理
干货|普通反爬虫机制的应对策略
爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史。而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走。然而,如果反爬机制过于严格,可能会误伤到
灯塔大数据
2018/04/08
1.8K0
干货|普通反爬虫机制的应对策略
一篇万字博文带你入坑爬虫这条不归路 【万字图文】
大家好,又见面了,我是你们的朋友全栈君。 👻最近,很多粉丝私信我问——爬虫到底是什么?学习爬虫到底该从何下手?👻 😬其实,我想说的也是曾经的我身为小白的时候某些大牛对我说过的——很多时候我们都有一颗想要学习新知识的心,却总是畏惧于对想要学习内容的无知,这也是多数人失败甚至后悔终身的:因为他们从来没有开始过!😬 😜借一位几年前带我入坑的前辈的话——坑就在你面前,别总是犹豫徘徊,大胆一点:向前一步,入了这个坑,莽着头就是往前冲,别多想,别回头,终有一天——>你也会成为别人的前辈!😜 ---- 今日份鸡
全栈程序员站长
2022/07/22
2670
一篇万字博文带你入坑爬虫这条不归路 【万字图文】
一、爬虫基本原理
一 爬虫是什么 #1、什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样。 #2、互联网建立的目的? 互联网的核心价值在于数据
用户1214487
2018/01/24
8060
一、爬虫基本原理
爬虫学习之第一章网络请求
HTTP协议:全称是HyperText Transfer Protocol,中文意思是超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是80端口。 HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443端口。
py3study
2020/01/15
7210
python爬虫针对需要登陆操作的技巧分析
在日常爬虫中我们经常会遇到一些目标网站需要带上cookie才能获取数据,cookie指某些网站为了辨别用户身份、进行sessionn跟踪而储存在用户本地终端上的数据(通常经过加密)。
小白学大数据
2023/05/05
3780
爬虫之爬虫简介与request请求库
爬虫协议:规定了什么东西网站让爬,什么东西不让爬,查看方式:网址/robots.txt 如
GH
2020/03/19
1.2K0
Python学习笔记HTTP基本原理
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent 等。
幻影龙王
2021/08/31
3700
Python学习笔记HTTP基本原理
python 爬虫与反爬虫
案例:雪球网 返回的就是403403 Forbidden. Your IP Address:xxx.xxx.xxx.xxx.但是当我们这样写:
用户5760343
2019/10/21
2.8K0
用Puppeteer点击与数据爬取:实现动态网页交互
在数据采集领域,传统的静态网页爬虫方式难以应对动态加载的网页内容。动态网页通常依赖JavaScript加载数据,用户需要与页面交互才能触发内容显示。因此,我们需要一种更智能的爬虫技术。Puppeteer作为强大的浏览器自动化工具,能模拟用户操作、加载动态数据、实现点击操作和内容采集。此外,为了提高抓取成功率并避免IP封禁,结合代理IP技术必不可少。本文将介绍如何使用Puppeteer和代理IP抓取51job招聘信息,同时从招聘信息的价值、市场应用以及大数据分析角度进行拓展。
jackcode
2024/11/06
2540
用Puppeteer点击与数据爬取:实现动态网页交互
相关推荐
Python爬虫的基本原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验